WordPress简单算术验证码
用过WordPress自带的Akismet插件,效果显著;之后发现这个添加简单算术验证的方法,就用上了——省了一个插件,也直接ban掉了绝大多数机器spam。另外我看大部分博友都没有添加验证码,所以前天晚上试着撤下了验证码,结果一会儿就是收到外国朋友的来信了—所以我又加上了。
我把这个验证码添加在提交按钮之前,每次输入都要填写;曾经试着放到信息输入框下面,但是第二次留言时,留言者的信息会自动隐藏,而这个验证却还还会刷新,结果就错误了。不知道如果添加了ajax,是不是就不刷新了?
方法如下:
修改 wp-comments-post.php :
查找:
if ( '' == $comment_content )
在其上面添加代码:
//Fufu_checkcode
if ( !$user->ID ) {
$aaa = trim($_POST[aaa]);
$bbb = trim($_POST[bbb]);
$subab = trim($_POST[subab]);
if((($aaa+$bbb)!=$subab)|| empty($subab)){
wp_die( __('Error: Please enter the correct results of the math problems.') );
}
}
//Fufu_end
然后修改当前主题目录下的 comments.php (我用的 Elegant Box) ,在适当的位置添加代码,我是在提交按钮之前添加的,即查找:
<input name="submit" type="submit" id="submit"
在其前面添加代码:
<?php if (!$user_ID) : ?>
<?php $aaa=rand(0,5); $bbb=rand(3,9); ?><?php echo $aaa; ?>+<?php echo $bbb; ?>=
<input type="text" name="subab" id="subab" size="2" tabindex="5" style="width:20px" /><?php if ($req) _e('(required)', 'elegantbox'); ?>
<input name="aaa" value="<?php echo $aaa; ?>" type="hidden" />
<input name="bbb" value="<?php echo $bbb; ?>" type="hidden" />
<?php endif; ?>
如果你的主题不是 Elegant Box 的话下面这段代码要做相应的修改,这段代码的对应的是“(必填)”这个说明,当然也可以直接换成文字。
<?php if ($req) _e('(required)', 'elegantbox'); ?>
代码来源:WordPress 防止垃圾评论算术验证码安装手记
声明:本站文章如无特别说明均为原创,转载请注明转自:WordPress简单算术验证码

我用willin的小墙,几周下来发现非常好。
@Skyoy Willin那个有不少好东西,改天改试试
我还是先开着Askimet吧,或者换Willin的小墙试试。评论验证码有点闲麻烦。
@朵未 准备换小墙,方法还挺简单
我就直接开着Askimet了,方便,好用。
@sslee 关键是垃圾评论还少浪费数据库的空间和时间,我还总有清理回收站的习惯
同样用Askimet,效果还可以啊
@奋飞 确实不错的,就是多个插件不爽
Akismet满靠谱的~手动填验证码麻烦的,不适合用户体验嘛~科技以人为本
@Forsaken 很有道理,我尽快改过来
已经是ajax了,么有验证码
睡觉了
Willin Kan 有个小墙蛮有用的,可以试试,能kill 一个插件
@长岛冰泪 嗯,我现在就在用
学习了
@乱炒不看图 填写验证码有点不人性化,我现在用的是willin的小墙,但是如果给到3.0不知道是否适用