2009-04-29

WordPress 防止垃圾评论(算术验证)

9+

最近被 WordPress 的垃圾评论给搞得头大,你刚清理了垃圾信息,第二天一看又是几万,不但占用数据库空间,你还不太好筛选出正常的博友评论。

或许你看到这个标题都不想点击查看全文,因为网上这类文章着实太多太多,而方法也不见得有多高明,对用户体验来讲,更是不值一提。

其实我也不愿意用这种算术验证的方式来防止垃圾评论,建好这个博客后,也比较少写博文,真正来评论的博友也很少,大部分都是垃圾评论,最近我试了一些 WordPress 反垃圾评论的插件和方法,效果都不太理想。

先是 Akismet ,启用了,WordPress API KEY 验证了。用了几天,每天能拦截2万多条垃圾评论,但要求审核的还有3千多条。累死个人。直接进 PHPMyAdmin 删除之。

也用过一些验证 Referer 的方法,没什么用。

当然,Google 一下‘WordPress 反垃圾评论插件’就有好多,像 Cookies for Comments 这类插件应该不错,不过我感觉机器人同时可以伪造 Cookies 或‘正常浏览’后再评论来绕过它。

大名鼎鼎的 Spam Karma 2 据说写数据库量比较大,不是太喜欢。后来想想,还是弄个算术验证好了。有心评论的博友们,应该不会吝啬做个简单的算术题吧。呵呵。

当然,也有算术验证插件:Math Comment Spam Protection

我喜欢自己改代码,方法如下(最先是在 silentstreet.net 看到):

修改 wp-comments-post.php :

查找:

if ( '' == $comment_content )

在其上面添加代码:

//Fufu_checkcode
if ( !$user->ID ) {
	$aaa = trim($_POST['aaa']);
	$bbb = trim($_POST['bbb']);
	$subab = trim($_POST['subab']);
	if((($aaa+$bbb)!=$subab)|| empty($subab)){
		wp_die( __('Error: Please enter the correct results of the math problems.') );
	}
}
//Fufu_end

然后修改当前主题目录下的 comments.php (我用的 iNove) ,在适当的位置添加代码,我是在提交按钮之前添加的,即查找:

<input name="submit" type="submit" id="submit" class="button"

在其前面添加代码:

<?php $aaa=rand(0,5); $bbb=rand(3,9); ?><?php echo $aaa; ?>+<?php echo $bbb; ?>=<input type="text" name="subab" id="subab" class="textfield" size="2" tabindex="5" style="width:20px;" /><?php if ($req) _e('(required)', 'inove'); ?><input type="hidden" name="aaa" value="<?php echo $aaa; ?>" /><input type="hidden" name="bbb" value="<?php echo $bbb; ?>" />

如果你的主题不是 iNove 的话下面这段代码要做相应的修改或删除,这段代码的意思是“(必填)”需要对应模板的语言。

<?php if ($req) _e('(required)', 'inove'); ?>

修改好了,用用看实际的效果如何吧。各位有什么用着实际效果好的防止垃圾评论的插件请推荐一二。

本文有 9 篇评论 ↓↓

  1. 还在用Spam Karma 2,一天1000来条垃圾评论,删除还忙得过来。主要是觉得作个算术不太方便……

  2. 谢谢,我正在找相关的内容,你写的对我很有帮助!:)

  3. @阿修
    的确是不大方便,但确实是很有效的手段。

    @xiaozhang
    目前看来用了这么久,没再出现Spam,如有需要推荐使用。

  4. 貌似不行..我的怎么能随便发呢.还.

    但你的能行.你是不是写掉了什么.....

  5. 现在是什么都发不起了...郁闷

  6. @wanwan
    代码应该没错哈。
    我去网站试了可以哦。

  7. @wanwan
    检查了一下,hidden表单部分在编辑syntax代码给搞掉了,呵呵。
    Google了一下,Adwi Blog转载的比较完整。
    代码已经修正了。试了你的博客,现在可以正常使用。

  8. hehe,不错,我也试试。

  9. 这个方法是博主原创的,请教下博主,其中修改 wp-comments-post.php的那段代码如何在主题的functions.php中实现呢?