虽然目前这小站没啥人看,也没人评论,但在我逛博客吧的时候看下评论下面有算术题验证,当然也有很多博主用图片验证码、谷歌人机验证之类的,但是我就是想弄一个算数验证h_h
正文开始:

进入你的站点后台(控制台->外观->编辑当前外观)->打开functions.php在文章最后添加如下代码

/*评论 算术验证码*/
function themeInit($comment){
    if ($comment->is('single')) {
        $comment = spam_protection_pre($comment);
    }
}
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:
            throw new Typecho_Widget_Exception(_t('有一道数学题还在等着你,往哪跑?<a href="javascript:history.back(-1)">回去算题</a>','评论失败'));
            break;
        default:
            throw new Typecho_Widget_Exception(_t('再给你一次按计算器的机会!请<a href="javascript:history.back(-1)">掏出计算器</a>','评论失败'));
    }
    return $commentdata;
}

math-1.png

comment.php中恰当的位置添加如下代码调用即可。

<p>
   <!--引用评论验证-->
   <?php spam_protection_math();?>
</p>

math-2.png

参考:
大嘴狗的小空间-http://www.sirit.com.cn/index.php/archives/418/
小米笔记-https://notemi.cn/typecho-non-plug-in-implementation-of-comment-arithmetic-verification-code.html#comment-2330

标签: typecho, 评论验证

添加新评论