|
Sep
14
|
|
|
Categories: WP/WP Plugins
| Tags: wordpress
| Views: 3,726
|
这个方法来自网上, 已经被转载多次了, 很多地方叫 "WordPress 代码添加算术验证码防止垃圾评论", 我已经无法找到原始出处. 我只是对它进行了一点小小的改进, 把它变成了 +-/* 四则运算. 方法也不是很复杂, 加入一个运算法则的变量就行了. 效果见下面的评论.
在主题文件夹里找到comments.php文件,在你想要显示输入框的地方加入代码:
<div class="row">
<input type="text" name="cal" id="cal" class="textfield" value="" size="24" tabindex="4" />
<label for="cal" class="small"><?php
$b = rand(1,9);
$c = rand(1,4);
if($c==1){$a = rand(0,40); $s = '+';}
elseif($c==2){$a = rand(0,30)+$b; $s = '-';}
elseif($c==3){$a = rand(0,5); $s = '*';}
else {$a = $b*$c; $s = '/';}
echo _e("$a $s $b = ?", 'elegantbox'); ?> <?php if ($req) _e('(required)', 'elegantbox'); ?>
</label>
<input name="a" type="hidden" value="<?php echo $a;?>" />
<input name="b" type="hidden" value="<?php echo $b;?>" />
<input name="c" type="hidden" value="<?php echo $c;?>" />
</div>
在文件wp-comments-post.php中加入如下代码进行验证:
if ( !$user->ID ) { $a = trim($_POST['a']); $b = trim($_POST['b']); $c = trim($_POST['c']); $sub = trim($_POST['cal']); if($c==1) $res = (bool)($sub == $a + $b); elseif($c==2) $res = (bool)($sub == $a - $b); elseif($c==3) $res = (bool)($sub == $a * $b); elseif($c==4) $res = (bool)($sub == $a / $b); else $res = false; if(!$res || empty($sub)){ wp_die( __('Error: please enter the right calculating result.') ); } }
另外,顺便记录一下这次wordpress升级改动的地方
1. 文章存档和链接的分栏显示 修改参考:wp侧栏内容分列显示技巧
2. 修改wp-codebox, (如果wp-codebox更新了的话) 修改参考:告别wordpress贴代码的烦恼
3. 修改评论验证, 即本文所述的内容
From 迷途知返, post wordpress非插件防垃圾评论方法
RELATED POSTS:


不错,不过还是喜欢简洁点 但又不让访客太过于麻烦,有些人天生不喜欢验证码
@沉思小屋:但是确实有很多垃圾评论很烦人
这个还是不会弄啊~这几天Akismet使用不了~来了一推垃圾英文评论~烦啊
我加了个留言验证码,怎么还有垃圾留言呢?