非插件实现wordpress验证码
blog里经常很多不厌其烦的垃圾广告评论,看了下内容很多都像是通过软件刷出来的,由于wordpress安装上除了默认的反垃圾插件外,并没有启用验证码机器,所以很容易实现批量刷垃圾评论。而又不想通过增加插件实现验证码功能,这里使用了一点简单的代码实现一个数学算法验证码。
找到主题的functions.php文件,将其备份后,增加如下内容:
1//评论添加验证码
2function spam_protection_math(){
3 $num1=rand(0,9);
4 $num2=rand(0,9);
5 echo "<label for=\"math\">请输入 <i>$num1 + $num2 = ?</i> 的计算结果:</label>\n";
6 echo "<input type=\"text\" name=\"sum\" class=\"text\" value=\"\" size=\"25\" tabindex=\"4\">\n";
7 echo "<input type=\"hidden\" name=\"num1\" value=\"$num1\">\n";
8 echo "<input type=\"hidden\" name=\"num2\" value=\"$num2\">";
9}
10function spam_protection_pre($commentdata){
11 $sum=$_POST['sum'];
12 switch($sum){
13 case $_POST['num1']+$_POST['num2']:
14 break;
15 case null:
16 wp_die('对不起: 请输入验证码。<a href="javascript:history.back(-1)">返回上一页</a>','评论失败');
17 break;
18 default:
19 wp_die('对不起: 验证码错误,请<a href="javascript:history.back(-1)">返回</a>重试。','评论失败');
20 }
21 return $commentdata;
22}
23if($comment_data['comment_type']==''){
24 add_filter('preprocess_comment','spam_protection_pre');
25}
在当前主题的comments.php找到评论输入部分的代码,添加验证码调用代码:
1<?php spam_protection_math();?>
示例如下:
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/wp-anti-spam-captcha/5576.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.