其实Typecho的垃圾评论一直都困扰着我,考虑过第三方评论,国内的不喜欢,国外的又需要翻墙,可能对有些朋友不太友好,所以暂时也不打算使用第三方评论,主要还是怕麻烦。另外一个想用第三方的行为验证码,极验验证或者网易盾,可是太**贵了,还不够折腾的成本,索性自己写个一加一验证算了

网站的垃圾评论应该是用软件刷的,我也经常会在其它博客看到类似垃圾评论(纯英文,带链接),具体我也不知道是谁搞的,希望加上这个验证码能阻止这种垃圾评论,现在博客开启了评论算术验证码及垃圾评论过滤插件(已不会阻止评论,某些评论可能仍然需要审核)
2337190383.png
其实说到垃圾评论,我今天清理评论时,发现了很多类似垃圾评论的伪垃圾评论,指的是:毫无意义的评论,例如:很好、学习了。我很纠结该不该删除,随后一想评论本来就少,还是不删吧哈哈。 不过还是希望能看到这篇文章的朋友,不要评论与文章无关的评论,做一个干净的博客,也是我一直的期望。

来吧,试试评论再看内容。

functions.php
在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('请输入验证码'));
            break;
        default:
            throw new Typecho_Widget_Exception(_t('验证码错误,请重新输入'));
    }
    return $commentdata;
}

comment.php

在comment.php中恰当的位置添加以下代码。

<?php spam_protection_math();?>

如放在评论提交form中,submit上。

<form method="post" action="<?php $this->commentUrl() ?>" id="comment-form" role="form">
    //此处略过表单...
    <p><?php spam_protection_math();?></p>
    <p><button type="submit" class="submit"><?php _e('评论'); ?></button></p>
</form>