typecho 和 wordpress 一样,开启评论后,总是会有垃圾的评论、外国机器人评论灌水,加上一个算术验算能有效的增加一层防护网。我加上以后,类似的灌水消失了。添加算术验证的方式虽多,但万变不离其宗,这里列举一种广为流传的。
实现方式
1、 在 function.php
文件中添加
function _spamProtectionMath()
{
$num1 = rand(0, 9);
$num2 = rand(0, 9);
echo "<input type=\"text\" value=\"\" placeholder=\"请计算 $num1 + $num2 = ...\" autocomplete=\"off\" name=\"sum\" maxlength=\"2\">";
echo "<input type=\"hidden\" name=\"num1\" value=\"$num1\">";
echo "<input type=\"hidden\" name=\"num2\" value=\"$num2\">";
}
function _spamProtectionPre($commentdata)
{
$sum = $_POST['sum'];
switch ($sum) {
case $_POST['num1'] + $_POST['num2']:
break;
case null:
throw new Typecho_Widget_Exception(_t('请输入计算结果!'));
break;
default:
throw new Typecho_Widget_Exception(_t('请输入正确结果!'));
}
return $commentdata;
}
2、 在内容页或者单页显示
function themeInit($self){
if ($self->is('single')) {
$comment = _spamProtectionPre($self);
}
}
3、 ajax 判断,找到评论提交这一块代码,把下面的加上
const sum = $("input[name='sum']").val();
const num1 = $("input[name='num1']").val();
const num2 = $("input[name='num2']").val();
$.ajax({
...
data: { num1, num2, sum },
...
});
4、 调用,把下面的代码添加评论提交的表单内
<?php _spamProtectionMath(); ?>
DzQ1104@
这篇文章写的真不错,真详细,点个赞。asd
WAAdwWWQWEZ咋的
发动机我刚刚