Typecho纯代码算术验证码

不使用插件为Typecho的评论增加验证码功能。
效果见本站评论表单。

方法如下:

第一步,编辑文件 functions.php 增加如下代码:

//算术验证评论
function themeInit($comment){
$comment = spam_protection_pre($comment, $post, $result);
}
function spam_protection_math(){
    $num1=rand(1,49);
//数字范围,自定义修改
    $num2=rand(1,49);
    echo "验证码:<input type=\"text\" name=\"sum\" class=\"text\" value=\"\" size=\"25\" tabindex=\"4\" style=\"width:100px\" required placeholder=\"$num1 + $num2 = ?\">\n";
    echo "<input type=\"hidden\" name=\"num1\" value=\"$num1\">\n";
    echo "<input type=\"hidden\" name=\"num2\" value=\"$num2\">";
}
function spam_protection_pre($comment, $post, $result){
    $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 $comment;
}

第二步,编辑主题comments.php文件,在提交按钮的代码前添加如下代码:

<?php if($this->user->hasLogin()==false):?>
<p><?php spam_protection_math();?></p>
<?php endif; ?>

完成。

参考资料

https://minirizhi.com/22.html

版权声明:转载或引用请注明出处

点赞 0

仅有一条评论

  1. test

添加新评论

验证码: