也许你还在为每天少者十来条多则五十上百的Spam而头疼,今天就隆重推荐Willin大大研发的新型防Spam利器:小牆 1.7

先来了解下Spam是的运作特性,它会填满所有资料框,包括姓名、邮件、网址、留言内容等等。小牆就利用Spam的此特性,增设了一个“display:block;width:0;height:0;margin:0;padding:0;”的资料框,正常情况下,访客是不可能填到这个宽高都为零的资料框的,所以,只要这里有东西,一定是Spam,绝无误杀!

使用方法很简单,直接将以下代码放到模板的 functions.php中:

/* -----------------------------------------------
<<小牆>> Anti-Spam v1.7 by Willin Kan.
*/
//建立
class anti_spam {
function anti_spam() {
if (!current_user_can('level_0')) {
add_action('template_redirect',array($this,'w_tb'),1);
add_action('init',array($this,'gate'),1);
add_action('preprocess_comment',array($this,'sink'),1); } }
//設欄位
function w_tb() {
if (is_singular()) {
ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)</textarea>#","textarea$1name=$2w$3$4</textarea>
<textarea name=\"comment\" cols=\"100%\" rows=\"8\" style=\"display:block;width:0;height:0;margin:0;padding:0;\"></textarea>",$input);'));
} }
//檢查
function gate() {
if (isset($_POST['w']) && !empty($_POST['w']) && empty($_POST['comment'])) {
$_POST['comment']= $_POST['w'];unset($_POST['w']);
} else {$_POST['spam_confirmed'] = 1;}
}
//處理
function sink($comment) {
if (isset($_POST['spam_confirmed']) && !empty($_POST['spam_confirmed'])) {
//方法一:直接擋掉, 將 die(); 前面兩斜線刪除即可.
//die();
//方法二:標記為spam, 留在資料庫檢查是否誤判.
add_filter('pre_comment_approved',create_function('','return "spam";'));
$is_ping = in_array($comment['comment_type'], array('pingback', 'trackback'));
if ($is_ping) {
$comment['comment_content'] = "◎ 這是 Pingback/Trackback, 小牆懷疑這可能是 Spam!\n" .$comment['comment_content'];
} else {
$comment['comment_content'] = "[ 小牆判斷這是Spam! ]\n" .$comment['comment_content'];
}}
return $comment;
}}
$anti_spam = new anti_spam();
// -- END ----------------------------------------

提示,此段代码是放到functions头 <?php 于尾 ?> 之间!另外,也可将等号右边的$comment['comment_content']; 改为substr($comment['comment_content'],0,50);  这样只截取50个字,节省了数据库空间。

木木童鞋经过几天的体验使用,一个字“攒”!我等等就把那“方法一”开起来,直接让那些MJJ的Spam们见哈利路亚去,阿门!

那叫啥AK啥啥的,一边凉快去吧~