改版了

Space这回才算是洗心革面了,速度快了很多.话说N天的辛苦,终于赶出了音乐盒管理程序3.0版 - -;话说上一次提到是什么时候来着= =b……核心代码史无前例的达到了数千行,还是第一次写这么长的东西-_-#,整体上算是好好对目前学到的东西作了一次复习。虽然仍然有很多善后工作要做,整体框架算是勉强完成了,有机会的话,再去尝试华丽的ajax或者动态封装吧- -|||。

小小总结一下经验

1.样式与结构的分离

样式全部用一个css文件控制,结构本次用的是用includ包含php模块,事实上比xsl还要简洁,但如果用php生成xsl的话,则灵活性会更上一层,只可惜xsl被支持的仍不够理想,计划下一个项目里尝试用php生成xsl+数据库映射xml的方式。

2.核心与周边的分离

可能这个表述不是很正确,意思是把所有的页面参数、页面输出和数据库操作都汇聚到一个专门的类里,把必要的核心参数返回成全局变量,其余的所有操作则在类的内部作参数传递,可以有效的防止“殃及池鱼”,最主要的是需要相关的页面信息时,只需要调用对应的函数。但这样做一旦修改起来要考虑到很多约束关系,很容易出错,要在注释里写清楚才是。

3.输出和操作的分离

PHP+MySQL是典型的B/S模式的数据库,MySQL在5.0之前是没有触发器和存储过程的,考虑到兼容性问题,数据库层的操作和约束关系还是要要通过PHP页面来实现,将PHP分离成页面输出+数据库操作,中间用函数的参数返回来传递,可以比较方便的更改整个站点的结构,对将来的升级或者扩充也能留有一些余地。

4.变量命名与数据库列项命名的分离

因为考虑到方便,所以一直喜欢把数据库列名对应的变量起成同一个,事实上这回主要就是在这里吃亏了。因为动作是否进行主要就是靠这些变量传递来控制的,很多时候往往返回这个变量,就会触发另一个操作,一旦出错要修正半天,后来对变量的命名按输出、操作等不同的目的作了一下分类,则效率高了很多。

5.一些灵异问题的解决对策

  • 调用论坛函数
    显然vbb作了一定安全处理,想要调用vbb的函数变量,必须在同一个目录下才有可能,这里用到了目录操作函数chdir(),但这个函数也不是万能的,如果目录结构进一步复杂,则完全不能行,可能就要专门写一个目录调整的函数来作用了,本次目录结构简单,完美解决。
    灵异度:2
  • 表格错位
    自从用了utf8,原本完整的表格居然错位了- -#,然则用fw重新切了一张居然是好的!!万般无奈之下,把原来用include包含的页面,改为直接嵌入,问题解决。但原因至今不明。
    灵异度:5
  • 头文件已发送
    设置cookie之前,是不能有html信息发送的,但明明将setcookie()放到最前面,居然也告诉我已经有头文件发送了。-__-||||, google之,貌似也有人遇到同样的问题,据称是utf-8的某个特征码会容易被误认为是头文件,并给出了号称用2进制打开后去掉特征码的页面,下载试之,果然解决。事实上我本机的PHP5是没问题的,可以理解为PHP4对UTF8的支持度尚且不足。
    灵异度:4
  • 读出乱码
    如果是mysql4.1以上,那么编码都是用一个整理属性来控制的,只需要执行一句set names 'utf8'即可
    如果PHP是4.05以上,那么可以用iconv()来转换
    那么如果两者都不满足呢……
    事实上mysql4.0字符集是由写入时候的编码决定的,所以这回比较取巧,导出后重新导回成uft8即可,如果连数据库的权限都没有,那么只能自己写转换函数了……
    灵异度:3.5

恩,当然话是这么说,感觉上写出来的东东还是比较幼稚,难登大雅之堂。欠缺的主要是经验,还有更深入的学习。不过音乐盒管理目前功能是足够用了,多了很多有意思的功能,至于某显著位置的列位封面女郎么……素俺个人的恶趣味,能在枯燥的编写代码之余,活动活动已经僵化的眼球>_<。灭活活。 Enjoy it~(~o ̄▽ ̄)~o
先激活账号
http://www.ave7.net/music/setup.php
再开始你的七街音乐之旅吧
http://www.ave7.net/music/

【更新日志】

V3.0
2006.7.21~2006.8.3
简单的音乐盒管理已经不能满足论坛的需要,必须根据不同的用户实现不同的功能。几乎是完全重写了所有代码,界面也变得非常华丽,并隐含了不少Allo个人的恶趣味- -。

[+] 隐蔽曲目物理下载地址,改为带统计的防盗链下载
[+] 排行榜
[+] 搜索功能
[+] 曲目屏蔽功能
[+] 收录功能,将用户曲目收录为每日一歌
[+] 用户可设置封面音乐
[+] 用户可选择收藏音乐盒曲目
[+] 用户可定义自己的音乐主页
[+] 设置用户等级,等级不同实现不同权限
[+] 用户信息管理
[+] 关联论坛用户信息,增加用户、上传、删除、收藏信息统计
[+] 关键操作会记入日志
[!] 全面支持UTF-8
[!] 更改的曲目分类的同时更改曲目的物理地址
[!] 可在任意栏目设置外部链接
[!] 分类是否对用户开放
[!] 页面美化
[!] PHP模块调用
[!] 核心代码优化,更改为类+函数调用

V2.0
2006.3.XX
论坛向PHP转型,音乐盒也要与时俱进,采用更好用的PHP+MySQL构架。这是Allo的第一个PHP程序,基本上是把Lazing的ASP版作了完全的移植,并加入了一些实用的小功能

[+] 删除曲目的同时删除物理文件
[+] 分类更改的同时更改物理文件夹名称,防止盗链
[!] 上传曲目到不同分类
[!] 更换为PHP+MySQL构架

V1.0
2005.4.XX
Lazing当时貌似正在学习数据库,听到Allo的音乐盒计划,鉴于管理的不便,于是就有了音乐盒的第一个版本。曲目信息保存在数据库中,使用后台进行曲目的添加、删除、修改。构架采用ASP+Access。

[+] 曲目的添加、删除、修改
[+] 分类显示、播放
[!] ASP+Access构架

V0.1
2005.3.XX
论坛用的音乐盒的原型是韩国人写的ExoBUD MP(II) v4.1,后来Jinwoong Yu又做了中文化,并加入了强大的歌词同步显示功能,曲目是通过调用JS文件实现的,需要手工添加,非常不便。Allo拿到后对界面作了一些美化,并计划投入到论坛使用。
[!] 音乐盒外观美化

Now Loading...