非插件实现评论算术验证码
其实Typecho的垃圾评论一直都困扰着我,考虑过第三方评论,国内的不喜欢,国外的又需要翻墙,可能对有些朋友不太友好,所以暂时也不打算使用第三方评论,主要还是怕麻烦。另外一个想用第三方的行为验证码
,极验验证或者网易盾,可是太**贵了,还不够折腾的成本,索性自己写个一加一验证算了
网站的垃圾评论应该是用软件刷的,我也经常会在其它博客看到类似垃圾评论(纯英文,带链接),具体我也不知道是谁搞的,希望加上这个验证码能阻止这种垃圾评论,现在博客开启了评论算术验证码及垃圾评论过滤插件(已不会阻止评论,某些评论可能仍然需要审核)
其实说到垃圾评论,我今天清理评论时,发现了很多类似垃圾评论的伪垃圾评论,指的是:毫无意义的评论,例如:很好、学习了。我很纠结该不该删除,随后一想评论本来就少,还是不删吧哈哈。 不过还是希望能看到这篇文章的朋友,不要评论与文章无关的评论,做一个干净的博客,也是我一直的期望。
来吧,试试评论再看内容。
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>
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
这篇文章是我看到最详细的,我也试着搞了,但无功而返
本站也是使用了这个方法,如果有不理解或者难操作的,可以贴出来我们一起看看😀
你可以啊😯