WordPress简单算术验证码

2010年5月23日 | 标签: ,

用过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简单算术验证码
  1. 2010年5月23日16:48

    我用willin的小墙,几周下来发现非常好。

  2. 2010年5月23日20:49

    我还是先开着Askimet吧,或者换Willin的小墙试试。评论验证码有点闲麻烦。

  3. 2010年5月23日21:17

    我就直接开着Askimet了,方便,好用。 :grin:

    • 2010年5月23日22:17

      @sslee 关键是垃圾评论还少浪费数据库的空间和时间,我还总有清理回收站的习惯 :evil:

  4. 2010年5月23日21:19

    同样用Askimet,效果还可以啊

  5. 2010年5月23日21:33

    Akismet满靠谱的~手动填验证码麻烦的,不适合用户体验嘛~科技以人为本

  6. 2010年5月24日01:49

    已经是ajax了,么有验证码 :mrgreen:
    睡觉了

  7. 2010年5月28日14:10

    Willin Kan 有个小墙蛮有用的,可以试试,能kill 一个插件

  8. 2010年8月12日12:01

    学习了