订阅汇聚素材网Feed

WordPress验证码(防止垃圾留言)

关于为WordPress添加算术验证码的文章网上可以搜到很多,不过基本上都是需要修改wordpress的源文件:wp-comments-post.php。修改wordpress的内核文件的麻烦在于当你的wordpress升级后又得重新再折腾一次,这种方法个人感觉不是很好,除非你实在喜欢折腾。下面给大家分享一种免修改wordpress源文件的办法。但是一样可以实现为WordPress评论添加算术验证码的功能。

下面直接上代码吧(把下面的代码写入主题目录下的functions.php中)

function spam_protection_math(){
//获取两个随机数, 范围5~15
$num1=rand(5,15);
$num2=rand(5,15);
//最终网页中的具体内容
echo”<fieldset id=’math’>”
.”$num1 + $num2 = <input type=’text’ name=’sum’ id=’sum’ value=” tabindex=’9′>”
.”<input type=’hidden’ name=’num1′ value=’$num1′>”
.”<input type=’hidden’ name=’num2′ value=’$num2′>”
.”</fieldset>”;
}

function spam_protection_pre($commentdata){
$sum=$_POST[‘sum’];//用户提交的计算结果
switch($sum){
//得到正确的计算结果则直接跳出
case $_POST[‘num1′]+$_POST[‘num2′]:break;
//未填写结果时的错误讯息
case null:wp_die(‘Error: please fill the math spam protection field.’);break;
//计算错误时的错误讯息
default:wp_die(‘Error: in case of a wrong answer.’);
}
return $commentdata;
}

if($comment_data[‘comment_type’]==”){
add_filter(‘preprocess_comment’,’spam_protection_pre’);
}

最后, 在你的评论模板comments.php定位到你想放置算术验证码的地方, 并插入<?php spam_protection_math();?>这一句便ok. 你可以在style.css中使用#math与#sum这两个选择器来自定义其显示样式.

不过有一点需要提示一下的是,因为目前很多wordpress博客都采用了Willin Kan的ajax提交评论的话,那么上面的代码你就需要再处理一下了,把上面代码中的wp_die改为err即可。

如果你希望在自己登陆时不受算术验证码制约, 那么可以采用下面的代码(也是本人正在使用的代码):

//算术验证码
function spam_protection_math(){
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
echo”<div class=’row’>”
.”<label for=’math’ class=’small’>验证码(必填):</label>”
.”$num1 + $num2 = <input type=’text’ name=’sum’ class=’math_textfield’ value=” tabindex=’1′>”
.”<input type=’hidden’ name=’num1′ value=’$num1′>”
.”<input type=’hidden’ name=’num2′ value=’$num2′>”
.”<label for=’math’ class=’small’> 请输入两数之和</label>”
.”</div>”;
}
function spam_protection_pre($commentdata){
$sum=$_POST[‘sum’];//用户提交的计算结果
switch($sum){
//得到正确的计算结果则直接跳出
case $_POST[‘num1′]+$_POST[‘num2′]:break;
//未填写结果时的错误讯息
case null:err(‘错误: 请填写算术结果.’);break;
//计算错误时的错误讯息
default:err(‘错误: 哎呀,你算错了哦,重试一下吧!’);
}
return $commentdata;
}
if(!is_user_logged_in() && $comment_data[‘comment_type’]==”){
add_filter(‘preprocess_comment’,’spam_protection_pre’);
}

其实认真的朋友仔细一看应该能发现,其实上面代码的重点就是把最后那段换成了

if(!is_user_logged_in() && $comment_data[‘comment_type’]==”){
add_filter(‘preprocess_comment’,’spam_protection_pre’);
}

而已,然后在评论模板comments.php中的内容也应替换为<?php if(!is_user_logged_in())spam_protection_math();?>即可。

资料来源:phoetry.me/archives/add-math-spam-protection-to-your-theme.html

6 人Likes
  

文章转载请注明:WordPress验证码(防止垃圾留言)-汇聚素材网

本文固定链接:http://www.webhj.com/hj-1541.html  +复制链接

WordPress验证码(防止垃圾留言):等您坐沙发呢!

发表评论

*

*

0 + 7

快捷键:Ctrl+Enter
0全站搜索 1 设计 2 素材 3 教材 4 WEB 5 电子书籍