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

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

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');

实际效果图:

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