wordpress评论添加算术验证码

Jonty
2013-08-07 / 0 评论 / 74 阅读 / 正在检测是否收录...

(一)在主题目录的functions.php添加如下代码:

function spam_provent_math(){
  $a=rand(5,15);
  $b=rand(5,15);
  echo "<input type='text' name='sum' id='sum'  size='22' tabindex='3' value='动手又动脑,哦也 !' onfocus='if (this.value != \"\") {this.value = \"\";}' onblur='if (this.value == \"\") {this.value = \"动手又动脑,哦也 !\";}' /> = $a + $b (<font color='#0088DD'>防止机器人评论</font>)" ."<input type='hidden' name='a' value='$a'/>" ."<input type='hidden' name='b' value='$b'/>";
}
function spam_provent_pre($spam_result){
  $sum=$_POST['sum'];
  switch($sum){
    case $_POST['a']+$_POST['b']:break;
    case null:wp_die('亲,算个结果撒');break;
    default:wp_die('算错啦⊙﹏⊙b汗');
  }
  return $spam_result;
}
//注册用户or管理员则不需要验证
if(!is_user_logged_in() &amp;&amp; $comment_data['comment_type']==''){
  add_filter('preprocess_comment','spam_provent_pre');
}

(二)在主题目录下的comments.php(不同的主题可能评论框的位置不同,有的主题可能在functions.php里面)中调用上述代码:

//根据是否是管理员来决定是否显示验证码
<!--?php if(!isset($_COOKIE['comment_author_email_'.COOKIEHASH]))spam_provent_math();?-->

补充几句:
如果验证码错误的时候页面变形,则把

case null:wp_die('亲,算个结果撒');break;
default:wp_die('算错啦⊙﹏⊙b汗');

改成

case null:err(__('亲,算个结果撒'));
default:err(__('算错啦⊙﹏⊙b汗'));
本文共 156 个字数,平均阅读时长 ≈ 1分钟
0

打赏

海报

正在生成.....

评论 (0)

取消