TypeCodes

折腾comment-ajax造成wordpress后台页面空白的BUG

1 折腾Willin Kan评论代码的一个“BUG”

前几天折腾了下Willin Kan的comment-ajax.php文件,改动了一些代码,结果博客好几天都没收到评论了。昨晚上还在纳闷,会不会是文章写得太烂了又或者是360的节点挂了?反正是百思不得其解。随便翻看着之前写的文章,突然想到了自己前几天修改了comment-ajax.php文件。会不会跟这个有关?赶紧UE打开看看!比较了下之前备份的comment_parentnt-ajax.php文件,发现最新的这份PHP文件中多出了下面几行代码。这个和前几天发现的一个BUG有关:查看了大多数有用Willin Kan大神的评论代码(comment-ajax.php、comment-ajax.js)的博客,只要在文章地址后面添加类似“?replytocom=1123'”的语句就会出现“BUG”(还在研究解决中,不多说了……)。

//父评论不存在时,恶意提交评论
if($post->comment_parent == ""){
 exit;  //直接退出,不给出提示
}
2 wordpress后台页面空白

于是,vfhky毫不犹豫地把上面的代码注释掉,然后在本地环境中测试,终于能正常发表评论了。紧接着,博主把修改好的这份文件覆盖掉线上的comment_ajax.php文件。改好后不久,博客就收到了来自 IT三两事 的评论。

经博主回复后,进入博客的后台却发现了异常情况:后台评论显示区域是空白的(如下图所示)。但是,博客前台还是能正常发送和接收评论。好吧,一事未完,一事又起,刚才的欢喜立马没了。遂百度了下“wordpress后台空白”,发现都是由于服务器搬家或者使用新主题造成的。和博主的情况完全不一样,在查看了其它PHP文件还是没有头绪。

wordpress后台页面空白

3 评论者的comment_parent值出错

晚上又在琢磨这个问题,后台页面的其它功能都正常,唯独评论无法正常显示。会不是数据库的问题呢?于是把博客的数据库备份到本地,然后对比之前备份的数据库文件。

在用Beyond compare对比后,发现一个重要问题,那就是“两三事”的评论的comment_parent字段值竟然和博主回复的comment_parent是一样的1390!显然这个是错误的,comment_parent代表的是该条评论的主评论的ID,也就是博主回复的comment_parent值1390是正确的,而两三事的comment_parent应该是0!于是博主立马用phpmyadmin修改了该值。

wordpress数据库的comment_parent字段出现BUG

然后进入博客的后台,接下来就是见证奇迹的时刻!

wordpress后台恢复正常

4 后记

由于急着解决Willin Kan评论代码的一个“BUG”,博主没考虑周全就把代码放到了线上,结果出现了博客无法评论的情况。在注释掉这行代码后,博客能正常评论,但是wordpress的后台界面又出现了BUG:竟然变成了“一片空白”。幸亏vfhky备份还比较勤快,在对比数据库后,发现是数据库的wp_comments表中的字段comment_parent值出现了问题。

打赏支持

Comments »