typecho添加评论算术验证
昵称
密码
标签搜索

typecho添加评论算术验证

小王先森
2021-05-08 / 0 评论 / 101 阅读 / 正在检测是否收录...
/

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(); ?>

预览效果

0

评论 (0)

取消