WordPress 防垃圾评论:添加数字算术验证码
WordPress 的垃圾评论是个比较头疼的事情,本站一开始就开启了屏蔽全英文的评论内容,后来发现全英文是不可能出现了,但是发现却出现了全日文,晕死!然后继续屏蔽全日文,效果好了不少!今天,继续增强垃圾评论防御能力,添加人机验证码,用的是比较简单的数学算术,不需要太复杂,能防机器就行了。虽然有相关的插件,但不建议使用,因为代码本身就很简单。
将下面的代码添加到主题的 functions.php 文件:
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 文件中,是不是很简单?