kn007的个人博客
♥ You are here: Home > 软件与网络 > php > 自己写了个防机器人评论的,请大家帮忙发现BUG

自己写了个防机器人评论的,请大家帮忙发现BUG

by | 58 Comments

提醒:本文最后更新于 4750 天前,文中所描述的信息可能已发生改变,请仔细核实。

Akismet的防垃圾评论能力确实是,垃圾评论很多,但是总是能从里边发现非垃圾评论,被划分成垃圾评论,几百条垃圾评论,找出这几条,然后批准,比较耗精力。

Qaptcha滑动解锁无论在美观上,实用方面,都很不错,但是过于依赖jquery库,而且需要的库文件还不少。同时加载超过1个(有2个及2个以上),滑动解锁就失效了,无法拖动,谁都不能回复,除了管理员。很难就是去说,你以后用一个新的插件,没带这个库,一带jquery,滑动解锁必定失效。。。十分坑爹。

因为对jquery的不熟悉,还有上面那个原因,实在是不想去动了,所以我放弃了Qaptcha,虽然有点可惜,但是事情追求不了完美,如要追求完美,还有很长的路要走!

所以我自己写了个非常简单的函数,通过判定评论者是否使复选框选中来作为是不是人的判断,来判定。

因为复选框一般人看到了自然会去选中它,不是人嘛。。。自然不知道。。。

希望我不会太片面了。。所以需要时间来证明是否有效。

现在把源码扔上来,请高手们指教下,不胜感激。

现在已经关闭Akismet了。

兼容Ajax comments。


源码如下(添加在主题的functions.php里面,兼容性基本上100%):

function access_submit($comment) {
   if (!is_user_logged_in()) {
          if(isset($_POST['access_submit'])) {
              return($comment);
          } else {
              if (isset($_POST['isajaxtype']) && $_POST['isajaxtype'] > -1) {
                  die("请先同意声明");
              } else {
                  if(function_exists('err')){
                      err("请先同意声明");
                 } else {
                      wp_die("请先同意声明");
                  }
              }
          }
   } else {
       return($comment);
   }
}
add_action('preprocess_comment', 'access_submit');
function add_checkbox() {  
   if (!is_user_logged_in()) {
      $content.= '<input type="checkbox" name="access_submit" id="access_submit" value="access_submit" style="width: 15px;" /><label for="access_submit" style="margin-left:5px;">同意声明并回复楼主  </label>';  
      $content.= '<span style="font-weight:bold;text-shadow:0 1px 0 #ddd;">  声明:</span> 本博采用 <a rel="nofollow" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="署名-非商业性使用-相同方式共享">BY-NC-SA</a> 协议进行授权';
      echo $content;
   }
}  
add_action('comment_form', 'add_checkbox');

实际效果图:

QQ截图20120702234859

转载请注明转自: kn007的个人博客 的《自己写了个防机器人评论的,请大家帮忙发现BUG

donate
有所帮助?
Tags: ,
Comments
58 Comments立即评论
  1. MOD
    回复

    其实滑动解锁也不是没有解决办法,要放在主题内,但是那样定义后,w3tc有时会让他出错

  2. 回复

    这。。好吧,用户体验下降了,对于防垃圾评论没有任何帮助。。

    1. MOD
      回复

      @BEAUTYLEG: 难道滑轮就没有降低!?
      这没办法。。先看看吧

  3. MOD
    回复

    今晚我再加几个机制,判断你是不是人,觉得你不是人,就出来那个提示勾选

    1. @kn007: 每天没事干的去看看垃圾评论我觉得挺好玩的= =

    2. MOD
      回复

      @节操掉光的的千寻: 问题是几百条,你还要去找误杀,那就不好玩了...

    3. @kn007: 一天最多几十条,没啥鸭梨

    4. MOD
      回复

      @节操掉光的的千寻: 哎,不行。。。没得比啊、、、我现在搞不懂的就是新域名baidu完全不想索引。。。google索引的比旧域名的力度还大。。

    5. @kn007: 反正度娘到现在还不收录我,我也懒得管

    6. MOD
      回复

      @节操掉光的的千寻: 不是吧。。。

    7. 回复

      @kn007: 旁边的这个回复链接是个死循环!!

    8. MOD
      回复

      @云淡然: 什么意思?那个地方

    9. MOD
      回复

      @云淡然: 以修复,谢谢,这个是另外的一个问题

    10. MOD
      回复

      @云淡然: 要不是你发现这个问题,我也不可能解决了那个以前想不明白的问题。。。。哈哈,那个问题终于解决了!!!

    11. 回复

      @kn007: 呵呵。解决就好。。也是无意间点到的

    12. MOD
      回复

      @云淡然: 本来放上去是有ajax效果的,但是一直没有,我以前点了,也没注意,今天正好看到google出的html5网站规范化,一下就想到了。。。哎。。以前真是傻傻的

  4. 回复

    支持一下。。。

  5. 回复

    你这个不错,我测试测试。。。貌似没什么错误。。。 ;-)

    1. MOD
      回复

      @Extreme: 谢谢哈~~~今天都没有垃圾评论了!!!嘿嘿

    2. 回复

      @kn007: ;-) ;-) ;-) ;-) ;-) ;-) ;-) 这个算不算垃圾评论。。。

    3. MOD
      回复

      @Extreme: 不算,是人的不算,讨厌机器人。。。

  6. LV5
    回复

    人才 都自己写了

    1. MOD
      回复

      @乐猪: 汗,最傻的办法。。。没办法,听楼上说有问题,看看是什么问题先,死循环!?你帮我发现发现

  7. MOD
    回复

    哦,我知道,那个不是死循环,那个是php填写不当的后果,我来改改

  8. LV6
    回复

    这种东西果断用社会化评论。、、

    1. MOD
      回复

      @Xider: 看吧,多说就不要推荐了,不喜欢他拍板,又没有其他社会化评论,能兼容本地视图,或者说比较类ajax功能的。友言我记得不可以。。。囧,评论吧,待会查查去,评论吧应该不可以吧。。

    2. LV6
      回复

      @kn007: 还好吧。。反正我是不介意那么多的。。这个真随便了。。

    3. MOD
      回复

      @Xider: 嗯,我是有点在意

  9. MOD
    回复

    多说的话,确实不错。只是我不想让我的用户太复杂了,有漏洞。3.2.1是有的,3.4.1就不知道。。。以后考虑下,我先去重新建个站调试下。
    我以前是用有用另外一个,不过因为漏洞原因,被攻击过,所以现在。。。没有再用。
    而且多说的排版我不喜欢...虽然是方便了

    1. LV6
      回复

      @kn007: 我是觉得排版挺兼容的。。不舒服的话还可以自己去DIY。。评论什么的根据个人喜好吧。。这个没什么的。。垃圾评论真心不想去管。。定期清空就好了

  10. MOD
    回复

    呵呵,也就是说还是有垃圾评论。囧,我现在没有了。。。 :cool:

    1. LV6
      回复

      @kn007: 其实也就是多一键的操作而已诶。。

    2. MOD
      回复

      @Xider: 一键清除,后台不是有?

;-):|:x:twisted::smile::shock::sad::roll::razz::oops::o:mrgreen::lol::idea::grin::evil::cry::cool::arrow::???::?::!: