现在的位置:首页>wordpress>正文

wordpress防垃圾评论之不用插件添加验证码

2013年08月26日 ⁄ 共 1589字 评论 15 条

最近一段时间来,部落的wordpress博客中的垃圾评论像洪水猛兽般越来越多,而自已又不愿意安装插件,导致现在每天都要花不少时间来清理这些垃圾评论.之前因为垃圾评论的数量并不是太多,所以一直通过手动的方法来清除,比如禁止全英文的评论,在后台的评论黑名单中添加关健词等,具体您可以参考不用插件清除网站的垃圾评论这篇文章.

部落还发现,这些垃圾评论居然还来自不同的IP地址,想来应该是通过软件群发的,很有可能还使用的代@理,如下图:

yanzhengma1

所以通过.htaccess文件来阻止其访问就显得相当困难,弄不好还会带来其它的影响.

后来严重的时候,部落干脆关闭wordpress的文章评论功能,但是这样做对用户体验是非常不友好的,看来是时候给评论框添加验证码这一项了.实现后的效果如下:

yanzhengma2

其实也就是用户在发表评论时,输入一个简单的加法运算,相信对体验不会构成太大的影响.具体做法如下:

一.添加计算函数

这里我们在当前主题的functions.php中添加以代码:

  1. //评论添加验证码
  2. function spam_protection_math(){
  3. $num1=rand(0,9);
  4. $num2=rand(0,9);
  5. echo "<input type='text' name='sum' class='math_textfield' value='' size='25' tabindex='4'> $num1 + $num2 = ?"
  6. ."<input type='hidden' name='num1' value='$num1'>"
  7. ."<input type='hidden' name='num2' value='$num2'>"
  8. ."<label for='math' class='small'> 请输入评论验证码</label>";}
  9. function spam_protection_pre($commentdata){
  10. $sum=$_POST['sum'];
  11. switch($sum){
  12. case $_POST['num1']+$_POST['num2']:break;
  13. case null:wp_die('对不起: 请输入验证码.');break;
  14. default:wp_die('对不起: 验证码错误,请重试.');
  15. }
  16. return $commentdata;
  17. }
  18. if($comment_data['comment_type']==''){
  19. add_filter('preprocess_comment','spam_protection_pre');
  20. }

二.修改原评论框内容

然后我们修改当前主题comments.php这个文件,找到输入发表评论信息的那些文字,如下图:

yanzhengma3

然网站的位置规划方添加以下代码:

< ?php spam_protection_math();?>

保存退出,添加验证码的工作就完成了.

三.测试

完成以上操作后,我们还得对上面的代码进行测试,随便打开一个页面,然后输入一个评论,在验证码框框中故意输入一个错误的数字,会出现如下图的提示:

yanzhengma4

我们可以看到相应的错误提示.到此整个验证码的功能就已经完成了.当然,如果想将评论功能做得更漂亮一些,您还可以增加在评论栏增加用户发表评论次数和用户VIP等级功能

部落使用评论添加验证码这个功能后,垃圾评论在之后的两天时间里一条也没有了.

PS:9月10日

漏掉了一点,在接下来的几天里,我还是收到了几个垃圾评论,当然,数量已经非常少,处理方法详见从数据库中禁用Pingback与Trackback来抵制垃圾评论这篇文章.如果您按部落提供的方法操作了,到些应该是不会再有垃圾评论了.

另外,我们可以通过删除Wordpress 程序根目录的wp-comments-post.php程序文件,一般的主题都不需要这个文件,可以放心删除,删除后可以屏蔽大部分spam机器人发的垃圾评论.

评论 15 条 评论内容很精采,有内幕,而且绝对有干货

  1. 免费资源部落 2013年08月26日 21:27  @回复  Δ-49楼 回复

    我以前也安装了一个插件。


    • 管理员
      管理员 2013年08月27日 11:12  @回复  ∇地下1层 回复

      您的网站回复相当多,不建议您做验证码处理,加一个防垃圾评论的插件好点!

  2. xzymoe 2013年08月28日 13:04  @回复  Δ-48楼 回复

    很给力的东西 但是验证码给用户的体验效果降低了


    • 管理员
      管理员 2013年08月28日 13:11  @回复  ∇地下1层 回复

      这就是所谓的鱼和熊掌不可兼得,但我认为这样值得一试.因为一个用户是不会在乎一个这么简单的计算的.相比防垃圾插件,您认为怎样做更合算?

  3. 调料 2014年07月26日 10:27  @回复  Δ-47楼 回复

    垃圾评论,我觉得还是部落提供的验证码那篇文章管用。

  4. 多一人 2014年10月19日 21:05  @回复  Δ-46楼 回复

    请问对于主题采用comment_form();这种方式调用评论表单的,应如何加入该功能呢?


    • 管理员
      管理员 2014年10月23日 08:33  @回复  ∇地下1层 回复

      直接将文章中的代码加入到您的WORDPRESS就行了啊。

      • 多一人 2014年10月25日 00:32  @回复  ∇地下2层 回复

        这样加没有效果啊,主题的comments.php是用我上面说的直接调用的评论表单,comments.php里也就这一句话(?php comment_form(); ?),不知道这样子表达对不对


        • 管理员
          管理员 2014年10月25日 10:42  @回复  ∇地下3层 回复

          您可以直接下载我们主题来看看。

  5. 软件酷(WwW.Softku.NeT) 2015年01月22日 19:07  @回复  Δ-45楼 回复

    已经使用,非常好

  6. JIAIDC 2015年05月27日 22:37  @回复  Δ-44楼 回复

    我也想使用,但是主题是4.2.2的在comments.php里根本看不到表单,不知道该怎么加。我新手,网上看了很多方法,都是能找到表单,加上就好了,但是我的根本看不到这些HTML形式的表单。


    • 管理员
      管理员 2015年05月28日 07:44  @回复  ∇地下1层 回复

      直接加入代码到您的comments.php试试看.

  7. 明云峰博客 2016年03月07日 18:47  @回复  Δ-43楼 回复

    使用wordpress自带的插件,需要api,但是api获取网站总是打不开。非常烦人,博主分享的这个方法非常好。

  8. 技术拉近你我 2016年08月30日 21:19  @回复  Δ-42楼 回复

    最近每天垃圾评论快100条,吐血。。


    • 管理员
      管理员 2016年08月30日 21:35  @回复  ∇地下1层 回复

      试一下这个,效果相当不错,我一直在用.

给我留言