改版了
- 本篇日志由AlloVince在August 03 2006 14:47:00发表
- YD的程序员葛阁 | 永久链接
- 日志未经声明,均为原创,版权遵循 『 创作共用 Creative Commons 』协议
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拿到后对界面作了一些美化,并计划投入到论坛使用。
[!] 音乐盒外观美化

tinna 在August 06 2006 01:51:13说:
我倒是觉得用FIREFOX上论坛快多了
tinna 在August 06 2006 01:50:24说:
快了吗? 去试试!
无名 在August 05 2006 04:55:59说:
太邪恶了
黑之月 在August 05 2006 00:30:31说:
现在用音乐盒不能听音乐阿~
script error!
OTL是我们家电脑设置有问题么?
萤火之森 在August 04 2006 14:55:07说:
全然分からない……
但是,傻傻的定一个~~
dyzisaboy 在August 04 2006 14:08:35说:
引用:
----------
----------
我学计算机的啊~~
怎么都全都看不懂lz说的啊....
----------
----------
诶,人家就是强……
我们的计算机系肯定是如同皮毛~
AlloVince 在August 04 2006 13:17:52说:
引用:
----------
作者: ttsi
----------
我学计算机的啊~~
怎么都全都看不懂lz说的啊....
----------
----------
因为我说的都是大实话
已经在公测了,欢迎试用
cool-sxx 在August 04 2006 09:39:56说:
不是很明白的说
ttsi 在August 04 2006 07:36:04说:
我学计算机的啊~~
怎么都全都看不懂lz说的啊....
dyzisaboy 在August 04 2006 03:31:44说:
哦~
自己做的东西总要调试一段时间~ ^^
支持个!
AlloVince 在August 04 2006 03:16:10说:
添加外部链接要钩选外部链接那一项
现在内测中,BUG无数:)暂时不能上传。等公测的时候再说吧
dyzisaboy 在August 04 2006 03:08:29说:
哇,好棒啊~只能传3么……
还有那个外部连接是什么意思呢?
除了音乐盒其他都是自己打造的吗?太佩服楼上2位了~
连接了一个wma的,额,播放不能…说播放器不支持,这里不支持wma?
Lazing 在August 04 2006 01:04:13说:
恩,全面启动LyricLib计划~~