Wordpress由于他的易用性,可扩展性及可自定义等等诸多优势,成为千千万万博志diy人士的首选.也正因为他庞大的用户群,被众多所谓的垃圾信息商顶上.如果不做任何措施,你的comment表里会每天增加数以百千万计的垃圾,十分烦人.不过用过几款所谓的反垃圾评论插件,感觉不是太顺手,设置麻烦,还有误删现象.可以diy的东西还是用diy的办法解决较爽.
这两天想了个招,手动给评论部分加了类似验证码的东西,相对简单.原理就是评论提交时要做一道随机的加减法.这里说一下,以供参考.
只需要两步:
1.在wp-content/themes目录下,找到你所用的模板目录,然后编辑comment.php页.
找到
- <p>
- <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />
- <label for="url">Website</label>
- </p>
大概这个位置,具体情况因模板页的不同而不同.
在这段逻辑完后添加:
- <p>
- <?
- $a=rand(0,8);
- $b=rand(8,12);
- ?>
- <input type="text" name="sub" tabindex="4"><input type="hidden" name="a" value="<?=$a?>" /><input type="hidden" name="b" value="<?=$b?>" />
- <label for="sub">Question: <span class="red"><?=$a?>+<?=$b?>=?</span> (Please enter a correct answer)
- </label>
- </p>
2.在根目录下找到wp-comments-post.php进行编辑
找到
- if ( get_option('require_name_email') && !$user->ID ) {
- if ( 6 > strlen($comment_author_email) || '' == $comment_author )
- wp_die( __('Error: please fill the required fields (name, email).') );
- elseif ( !is_email($comment_author_email))
- wp_die( __('Error: please enter a valid email address.') );
- }
在这个位置下添加:
- if ( !$user->ID ) {
- $a = trim($_POST[a]);
- $b = trim($_POST[b]);
- $sub = trim($_POST[sub]);
- if((($a+$b)!=$sub)|| empty($sub)){
- wp_die( __('Error: please enter a correct answer.') );
- }
- }
done.
这里第一步设置的a,b分别是两个随机加数,sub是提交的隐藏结果,第二步在接收页进行加法验证,如果匹配就进行下一步操作,不匹配就返回错误结果.这里考虑的是不对管理员进行这些验证.当然你也可以依据这样的思路来整出你要的各种效果,比如乘法,除法.此法的优点:简单容易操作.缺点:每次换模板或者升级程序都得重新整一下.
ps我现在用的版本是2.6.2.别的版本方法类似.
总算解决垃圾评论的问题了~
谢谢~
fishtimes Says @ 09-02-19 1:01 pm
客气.
这个办法不错 已经用上了 谢谢
robin.ma Says @ 09-03-2 6:38 pm
但是我用的ajaxcomment的插件,按照上面做法后,提交评论后会出现警告信息,提示“comments-ajax.php”页面的66,67,68错误,怎么解决呢??
大米干饭 Says @ 09-03-14 9:56 am
此法只适合原版评论,其他插件没有做过相关研究.
感谢~~~~~~~~~~~····
wwek Says @ 09-05-4 11:36 am
不客气~
这个有用,多谢
info2008 Says @ 10-04-14 7:22 pm