※缘聚久久※≡ 娱乐休闲 ≡『 资讯平台 』 → 动网论坛8.3版投票缺陷修复


  共有6460人关注过本帖树形打印复制链接

主题:动网论坛8.3版投票缺陷修复

客人(117.21.*.*)
  1楼


动网论坛8.3版投票缺陷修复  发帖心情 Post By:2012-9-5 17:32:01 [只看该作者]

    在制作论坛皮肤的同时,发现由原来的 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 字段是存放投票数的。例如一个正常的三项目单选投票结构应该如下:

 vote[字段] 
 votenum[字段] 
  选项A选项B选项C 
 000 

    选项A:0票
    选项B:0票
    选项C:0票

    在实际的查看过程中发现,选项的分割符不见了。如下:
  
 vote[字段] 
 votenum[字段] 
  选项A 选项B 选项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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
丁不三
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:690 积分:959 威望:0 精华:0 注册:2012-9-5 10:56:11
  发帖心情 Post By:2012-9-12 12:29:44 [只看该作者]

13辛苦。

 回到顶部