Wordpress由于他的易用性,可扩展性及可自定义等等诸多优势,成为千千万万博志diy人士的首选.也正因为他庞大的用户群,被众多所谓的垃圾信息商顶上.如果不做任何措施,你的comment表里会每天增加数以百千万计的垃圾,十分烦人.不过用过几款所谓的反垃圾评论插件,感觉不是太顺手,设置麻烦,还有误删现象.可以diy的东西还是用diy的办法解决较爽.

这两天想了个招,手动给评论部分加了类似验证码的东西,相对简单.原理就是评论提交时要做一道随机的加减法.这里说一下,以供参考.
只需要两步:
1.在wp-content/themes目录下,找到你所用的模板目录,然后编辑comment.php页.
找到

  1. <p>
  2. <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" tabindex="3" />
  3. <label for="url">Website</label>
  4. </p>

大概这个位置,具体情况因模板页的不同而不同.
在这段逻辑完后添加:

  1. <p>
  2. <?
  3. $a=rand(0,8);
  4. $b=rand(8,12);
  5. ?>
  6. <input type="text" name="sub" tabindex="4"><input type="hidden" name="a" value="<?=$a?>" /><input type="hidden" name="b" value="<?=$b?>" />
  7. <label for="sub">Question: <span class="red"><?=$a?>+<?=$b?>=?</span> (Please enter a  correct answer)
  8. </label>
  9. </p>

2.在根目录下找到wp-comments-post.php进行编辑

找到

  1. if ( get_option('require_name_email') && !$user->ID ) {
  2.     if ( 6 > strlen($comment_author_email) || '' == $comment_author )
  3.         wp_die( __('Error: please fill the required fields (name, email).') );
  4.     elseif ( !is_email($comment_author_email))
  5.         wp_die( __('Error: please enter a valid email address.') );
  6. }

在这个位置下添加:

  1. if ( !$user->ID ) {
  2. $a = trim($_POST[a]);
  3. $b = trim($_POST[b]);
  4. $sub = trim($_POST[sub]);
  5.  
  6. if((($a+$b)!=$sub)|| empty($sub)){
  7. wp_die( __('Error: please enter a  correct answer.') );
  8. }
  9. }

done.

这里第一步设置的a,b分别是两个随机加数,sub是提交的隐藏结果,第二步在接收页进行加法验证,如果匹配就进行下一步操作,不匹配就返回错误结果.这里考虑的是不对管理员进行这些验证.当然你也可以依据这样的思路来整出你要的各种效果,比如乘法,除法.此法的优点:简单容易操作.缺点:每次换模板或者升级程序都得重新整一下.

ps我现在用的版本是2.6.2.别的版本方法类似.

Random Posts

Quote:http://www.salontino.net/index.php/archives/102

10 Responses

  1. 总算解决垃圾评论的问题了~
    谢谢~

    [ Quote ]

    fishtimes Says @ 09-02-19 1:01 pm
  2. fishtimes on February 19, 2009 at 1:01 pm said:

    总算解决垃圾评论的问题了~
    谢谢~

    客气.

    [ Quote ]
    salontino Says @ 09-02-19 1:27 pm
  3. 这个办法不错 已经用上了 谢谢

    [ Quote ]

    robin.ma Says @ 09-03-2 6:38 pm
  4. 但是我用的ajaxcomment的插件,按照上面做法后,提交评论后会出现警告信息,提示“comments-ajax.php”页面的66,67,68错误,怎么解决呢??

    [ Quote ]

    大米干饭 Says @ 09-03-14 9:56 am
  5. 大米干饭 on March 14, 2009 at 9:56 am said:

    但是我用的ajaxcomment的插件,按照上面做法后,提交评论后会出现警告信息,提示“comments-ajax.php”页面的66,67,68错误,怎么解决呢??

    此法只适合原版评论,其他插件没有做过相关研究.

    [ Quote ]
    salontino Says @ 09-03-14 4:50 pm
  6. 感谢~~~~~~~~~~~····

    [ Quote ]

    wwek Says @ 09-05-4 11:36 am
  7. wwek on May 4, 2009 at 11:36 am said:

    感谢~~~~~~~~~~~····

    不客气~

    [ Quote ]
    salontino Says @ 09-05-14 5:05 pm
  8. 这个有用,多谢

    [ Quote ]

    info2008 Says @ 10-04-14 7:22 pm

Trackbacks & Pingbacks

  • 解决wordpress垃圾评论问题

    [...] 参考文章:http://www.salontino.net/?p=102 最近博客被机器程序看上了。发了很多垃圾留言,删了几十条。 [...]

  • 大海个人网站 » Blog Archive » 两步解决 wordpress垃圾评论问题

    [...] } done. 这里第一步设置的a,b分别是两个随机加数,sub是提交的隐藏结果,第二步在接收页进行加法验证,如果匹配就进行下一步操作,不匹配就返回错误结果.这 里考虑的是不对管理员进行这些验证.当然你也可以依据这样的思路来整出你要的各种效果,比如乘法,除法.此法的优点:简单容易操作.缺点:每次换模板或者 升级程序都得重新整一下. ps我现在用的版本是2.6.2.别的版本方法类似. 本文引用自:http://www.salontino.net/index.php/archives/102 [...]

Like to say what is here