wordpress手动添加评论算术验证码


网上找了好多,终于找到一个能用的,声明:本人的原则是能不用插件就不用插件!这次wordpress的HotnewsPro主题手动添加评论算术验证码只需修改主题中两个文件即可!

1、打开主题目录下的functions.php,在最后的“?>”代码前添加以下函数代码,直接粘贴进去:

[php]
function spam_protection_math(){
//获取两个随机数, 范围0~50,可修改
$num1=rand(0,50);
$num2=rand(0,50);
//最终网页中的具体内容
echo"<div class='row'>"
."<label for='math' class='small'>验证码: </label>"
."$num1 + $num2 = <input type='text' name='sum' class='math_textfield' value='' tabindex='1'>"
."<input type='hidden' name='num1' value='$num1'>"
."<input type='hidden' name='num2' value='$num2'>"
."</div>";

}
function spam_protection_pre($commentdata){
$sum=$_POST['sum'];//用户提交的计算结果
switch($sum){
//得到正确的计算结果则直接跳出
case $_POST['num1']+$_POST['num2']:break;
//未填写结果时的错误讯息
case null:err('请在提交前填写计算结果!');break;
//计算错误时的错误讯息
default:err('你居然算错了!');
}
return $commentdata;
}
if(!is_user_logged_in() && $comment_data['comment_type']==''){
add_filter('preprocess_comment','spam_protection_pre');
}
[/php]

2、打开主题目录下的comments.php,在适当位置(但要在“提交”按钮前)添加调用代码即可:

[php]
<?php if(!is_user_logged_in())spam_protection_math();?>
[/php]

我的是添加到留言内容框框的下面的,看部分代码:

[php]
<div class="clear"></div>
<p><textarea name="comment" id="comment" tabindex="4"></textarea></p>
<?php if(!is_user_logged_in())spam_protection_math();?>//添加到评论框后面,且要在“提交留言“前面
<p>
<?php if (get_option('swt_smiley') == '关闭') { ?>
<?php { echo ''; } ?>
<?php } else { include(TEMPLATEPATH . '/includes/smiley.php'); } ?>
</p>
<div class="submitted">
<input class="submit" name="submit" type="submit" id="submit" tabindex="5" value="提交留言"/>
<input class="reset" name="reset" type="reset" id="reset" tabindex="6" value="<?php esc_attr_e( '重写' ); ?>" />
<?php comment_id_fields(); ?>
</div>
[/php]

这个代码加了用户登录验证,如果是已登录就不用再输入验证码的,方便吧!看本地测试效果图:
comments-diy

5 Responses Comment (5) Trackback (0)
  1. 莆田网 :

    站长怎么没用呢,这个留言不用验证码? :?:

    1. SingleX Post author :

      @莆田网 : 没时间呀,这几天天天考试忙的,在本地环境已经测试过了的。开始我也想验证码,不过貌似比较麻烦,算术验证比较简单嘎。

  2. skylong :

    恰恰相反,我是能用插件就用插件 :shock:

发表评论