今天接到访客carloschen的报告,称:“試過在別人網誌留言會重複發文好幾篇”。

如果您的blog也遇到了同样的问题,你可以直接跳到我这篇日志的结尾看解决方法。假如您有兴趣了解一下这个问题的成因,那么请往下看。

这个情况和使用的习惯有关。在评论提交处的结尾,是输入验证码的输入框。如果填写完所有信息后,点击下方的“提交”按钮提交评论,那是不会出现问题的。评论在经过处理后会马上反应在页面上,这是符合预期效果的。
但如果用户也可能有这样的习惯,那就是在填完所有信息后,如果最后一个输入框是单行的文本框,那么直接按键盘上的回车键就可以提交了。想当初刚刚上网的时候,这个还是老鸟作为一个“技巧”传授给我的。IE和Firefox均支持这个特性。

不过问题也产生了。当按回车键在验证码输入框内直接提交这个评论的时候,浏览器没有执行点击“提交”按钮时执行的动作,这样就越过了Ajax提交这个步骤,直接提交了评论,也就是最平常的“有刷新”的提交方式。

这也没什么,顶多就是刷新了一次,不如Ajax这么迅速就能看到评论的效果罢了。但是,由于部分模板在form的onsubmit事件中增加了触发ajax回复的事件,这样就导致了提交两次的问题!首先是在按下enter键的一刹那,触发了onsubmit事件,评论提交了一次,又因为浏览器在执行此次事件后继续了提交动作,因此评论又在无ajax事件的情况下再提交了一次。这就是产生两个相同评论的原因。(可用IE重现。)

解决起来也容易,那就是去掉form的onsubmit 事件,然后把form的action地址改为与按下提交按钮的事件相同的javascript就可以了。

解决方法:
在模板的 elements.php 中,查找到
<form name="visitorinput" id="visitorinput" method="post" action="{actionurl}">

做如下修改
<form name="visitorinput" id="visitorinput" method="post" action="javascript: ajax_submit('{jobnow}');">

如果模板的此位置还有这样的句子:
onsubmit="ajax_submit('{jobnow}');"

把它删除即可。也就是说,最后这里应该都是这样的:
<form name="visitorinput" id="visitorinput" method="post" action="javascript: ajax_submit('{jobnow}');">


修改后,无论是按提交按钮,还是在验证码输入框内按回车键提交,都只会提交一次,而且都会触发Ajax回复事件。
Tags:
lindsay Homepage
2006年2月19日星期日 21:25
在论坛上看到joy4ever的帖子,继而看了她的文章(http://www.joy4ever.com/blog/blog2/read.php?1224),发现我的情况和她相同:没有开启验证码,但是留言或评论仍有重复。按照她的方法查了一下,确实有用户ID重复的现象。我的两个blog分别是升级到2.0.1 RC3和2.0.1的,都有这个情况。
但是我不懂SQL,不知道应该怎么修改。能不能请Bob再有时间的时候帮忙出个补丁之类的,我想有问题的应该不止我一个。先谢谢了!
wweix Email Homepage
2006年2月16日星期四 17:16
已经修改了,以前注册的用户发帖还是几条,我在论坛已经截图了。

只是显示有几条,计数还是只有1条。
joy4ever Email Homepage
2006年1月26日星期四 02:15
我找到原因了!
从 1.7 升到 2.0 时,可能是转换程序的问题(不确定),所有用户信息没有正确转入,ID 号码有些混乱和重复。而重复的留言是因为留言者的用户 ID 和别人的有重复,比如如果用户 ID 是 5,而有 8 个其他用户的 ID 都是 5 的话,留言就会重复 8 次。要解决这个问题,只要去数据库把 ID 重新分配一下应该就可以了。不过不知道以后 Bo-Blog 的程序里有没有可能加入一些检查数据的功能,确保 ID 不会重复呢?
bob 回复于 2006年1月27日星期五 15:45
一般情况下ID是不可能重复的啦,转换程序应该也不会。我试过3次,都没有出现这个情况。奇了。
joy4ever Email Homepage
2006年1月25日星期三 13:43
不好意思,一下子留那么多言,不过刚才又发现了新的问题,就是以前的留言本来没有重复的也会突然重复了。看样子不是存入数据,而是提取数据时出的问题。而且,我没有开启验证码,所以问题和你提到的不一样。
joy4ever Email Homepage
2006年1月25日星期三 13:32
还有,最多的一次留言重复了 7 次,回复其中一条以后同时回复了其它几条重复的,但在数据库里看不到重复。到底是怎么回事呢?谢谢!
joy4ever Email Homepage
2006年1月25日星期三 12:46
又发现一个问题,几次重复留言后,最先的几个留言(别人留的)不见了,但进入管理后还能看得到,只是页面上不显示。
joy4ever Email Homepage
2006年1月25日星期三 04:01
我照这样改了还是有问题。。。
joy4ever Homepage
2006年1月24日星期二 13:40
我今天也碰到了这个问题,不过我并没有开启验证码。
有没有办法将多出来的几个留言或是评论删除呢?我发现虽然同样的评论显示了四次,但数据库里只有一条评论,并没有重复,如果删除一个的话可能将其它的也都删除。那这四条同样的评论是存在哪里的呢?
升級RC3版的看一下
[2006年1月23日星期一 21:13]
来源:Just Do It 那個黑店
内容:若您有升級做RC3版的,請check一下當回覆完不要暗按提交鈕,而直接按enter鍵的話,是否會連跑出兩筆同一時間的回覆。若有的話可參考以下兩篇或直接依照範例直接修改您的elements.php檔。Bo-Blog 2.0一個使用習慣導致的問題 - Carlos Life Book一個用戶習慣可能導致的問題 - Bob的部落格我比對了它之間的差異如下:(elements.php檔)請先找到這段$elements=
Bo-Blog 2.0一個使用習慣導致的問題
[2006年1月23日星期一 11:24]
来源:Carlos
内容:這是在Jaciyeh網誌升級到Bo-Blog 2.0 RC3所遇到的問題。昨天到他的網誌留言評論一篇文章,沒想到卻重複發了好幾篇,重新再試一次,結果還是一樣,反而他自己的評論都很正常,於是向Bob反應這個問題,Bob也..
分页: 1/1 第一页 1 最后页


Powered by Bo-Blog 2.1.1 RC1Code detection by Bug.Center.Team
沪ICP备05032643号

© 2008 博睿智 Marshal Design Bo-blog offcial theme