以文本方式查看主题 - ※缘聚久久※ (http://yjjj.com/bbs/index.asp) -- 『 资讯平台 』 (http://yjjj.com/bbs/list.asp?boardid=111) ---- 动网论坛8.3版投票缺陷修复 (http://yjjj.com/bbs/dispbbs.asp?boardid=111&id=58596) |
||||||||
-- 作者:红色-13 -- 发布时间:2012-9-5 17:32:01 -- 动网论坛8.3版投票缺陷修复 在制作论坛皮肤的同时,发现由原来的 8.2 版升级到 8.3版后。发布投票贴变的不好使了。一开始以为是自己在制作皮肤时破坏了论坛程序结构。后来恢复论坛默认的皮肤及重新搭建论坛(直接使用官方原版),发现问题仍然顽固存在。看来和制作皮肤是没有必然的联系了,问题就发生在论坛的原码上。经过一上午的跟踪原码最终发现在投票项目写库前处理错误。 首先、inc/dv_servote.js 中。 以下内容为程序代码: 1 第166行:votedb_Obj.value += \'\\r\'; 这行是在投票项目后边串入换行符,对应 ASP 的符号是 chr(10)。 其次、在 Dispbbs.asp 中。 以下内容为程序代码: 1 第352行:a1=Split(Dvbbs.ChkBadWords(aVote(1,0)),"|") \'以 | 号分割投票项 2 第353行:a2=Split(aVote(2,0),"|") \'以 | 号分割投票项的票数 3 第354行:u1=UBound(a1) \'计数选择项 以上两点可以看出,在发投票贴时的数据是以\'\\r\'[换行符]传递给SavePost.asp的。而页面在读取数据库的时候,是以\'|\'号来分割显示项目的。打开数据库查看投票项目的数据库存储值。在 Dv_Vote 表中 vote 字段是存放投票项目名称的,votenum 字段是存放投票数的。例如一个正常的三项目单选投票结构应该如下:
选项A:0票 选项B:0票 选项C:0票 在实际的查看过程中发现,选项的分割符不见了。如下:
选项A 选项B 选项C :0票 在贴子中,不论发贴时设置了多少个选项,统统变成只有一项。 再去查找 SavePost.asp 在文件的第567行: 以下内容为程序代码: 1 第567行:vote=split(vote,chr(13)&chr(10)) 真奇怪呀,在页面提交的时候仅串入了一个 \'\\r\' [换行符],而在入库过滤前确是以 chr(13)&chr(10) [回车符][换行符] 来分割字串。果断修改该处,修改为: 以下内容为程序代码: 1 第567行:vote=split(vote,chr(10)) 再次发布投票贴测试,这下完全正常了。 嘎嘎~表扬自己一下~ [此贴子已经被作者于2012-9-5 20:41:58编辑过]
|
||||||||
-- 作者:丁不三 -- 发布时间:2012-9-12 12:29:44 -- 13辛苦。 |