博客一旦开放评论功能垃圾评论就会疯拥而来,有效的解决方法是给评论添加验证码功能,在一定程度上可以减少或防止评论机器人,前面博客吧介绍了防垃圾评论或注册的 wordpress 算术问答验证码插件Captcha,但是如果不喜欢用插件或者只需要个简单的算术验证码,可以直接在主题里使用代码实现。
一、文章评论部分添加算术验证码
把下面的代码添加到主题的functions.php文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //评论添加验证码 function spam_protection_math(){ $num1=rand(0,9); $num2=rand(0,9); echo "<label for=\"math\">请输入 <i>$num1 + $num2 = ?</i> 的计算结果:</label>\n"; echo "<input type=\"text\" name=\"sum\" class=\"text\" value=\"\" size=\"25\" tabindex=\"4\">\n"; echo "<input type=\"hidden\" name=\"num1\" value=\"$num1\">\n"; echo "<input type=\"hidden\" name=\"num2\" value=\"$num2\">"; } function spam_protection_pre($commentdata){ $sum=$_POST['sum']; switch($sum){ case $_POST['num1']+$_POST['num2']: break; case null: wp_die('对不起: 请输入验证码。<a href="javascript:history.back(-1)">返回上一页</a>','评论失败'); break; default: wp_die('对不起: 验证码错误,请<a href="javascript:history.back(-1)">返回</a>重试。','评论失败'); } return $commentdata; } if($comment_data['comment_type']==''){ add_filter('preprocess_comment','spam_protection_pre'); } |
在当前主题的comments.php找到评论输入部分的代码,添加验证码调用代码:
1 | <?php spam_protection_math();?> |
二、后台登陆界面添加算数验证码
给网站登录添加验证码功能在一定程度上可以有效减少机器人软件暴力破解暴力登录,对于wordpress程序可以有很多相关插件可以实现,不过这么简单的功能其实没有必要安装一个插件,通过简单的代码也很容易实现。
把下面的代码添加到当前主题的functions.php文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function login_val_fields() { //获取两个随机数, 范围0~9 $num1=rand(0,9); $num2=rand(0,9); echo "<p><label for='math' class='small'>验证码</label> $num1 + $num2 = ?<input type='text' name='sum' class='input' value='' size='25' tabindex='4'>"."<input type='hidden' name='num1' value='$num1'>"."<input type='hidden' name='num2' value='$num2'></p>"; } add_action('login_form','login_val_fields'); function login_val() { if(isset($_POST['sum'])){ //获取用户提交的计算结果 $sum=$_POST['sum']; switch($sum){ //得到正确的计算结果则直接跳出 case $_POST['num1']+$_POST['num2']:break; //未填写结果时的错误讯息 case null:wp_die('错误: 请输入验证码.'); break; //计算错误时的错误讯息 default:wp_die('错误: 验证码错误,请重试.'); } } } add_action('login_form_login','login_val'); |
测试一下