如何屏蔽垃圾留言
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2009/08/avoid_spam.html
链接:http://www.dbaroad.me/archives/2009/08/avoid_spam.html
一直以来都没有安装过屏蔽垃圾留言的插件,都是通过后台设置,如果留言中带有链接,则需要审核,再通过手工删除的方式进行处理。有时垃圾留言比较多,这样处理,实在是烦。在论坛的搜索中,意外地找到了一篇文章,屏蔽垃圾留言还真是好,转载一下:
原文地址:http://immmmm.com/small-wall-1-7.html
原理:
先来了解下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$1name=$2w$3$4 <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 ---------------------------------------- |
试用一周,发现屏蔽垃圾留言很有效,测试留言正常,特来推荐一下。
— The End —
关键字: wp


站内搜索