Willin大侠对Wordpress防Spam很有一套,之前写过《WP最簡單的防佬外Spam方式》、《WP免插件防國外Spam方式》、《防Spam又有新招》、《使用Wordpress內置評論審核》等文章介绍如何防止Spam的骚扰,都很实用。这里我要转载的是Willin的《小牆 - 防Spam就是這麼簡單》最新版。我现在用的就是Willin的“小墙”,至今已经拦截N条Spam,无一误杀。所以特地拿来和大家分享一下:
将以下代码复制到function.php中就可以了。
<?php
/* -----------------------------------------------
<<小牆>> Anti-Spam v1.6a by Willin Kan.
*/
//建立黑匣子
class anti_spam {
function anti_spam() {
add_action( 'comment_form', array( &$this, 'w_tb' ) );
add_filter( 'preprocess_comment', array( &$this, 'gate' ) ); }
//設欄位
function w_tb() { echo '<textarea name="comments" cols="100%" rows="8" style="display: none;"></textarea>'; }
//檢查
function gate( $commentdata ) {
$is_ping = in_array($commentdata['comment_type'], array('pingback', 'trackback'));
if ( $is_ping ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆懷疑這可能是 Spam! ]\n" . $commentdata['comment_content'] ;
}
if ( $_POST['comments'] != '' ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆判斷這是 Spam! ]\n" . substr($commentdata['comment_content'],0,50) . "...." ;
}
return $commentdata;
} }
$anti_spam = new anti_spam();
// -- END ----------------------------------------
?>
/* -----------------------------------------------
<<小牆>> Anti-Spam v1.6a by Willin Kan.
*/
//建立黑匣子
class anti_spam {
function anti_spam() {
add_action( 'comment_form', array( &$this, 'w_tb' ) );
add_filter( 'preprocess_comment', array( &$this, 'gate' ) ); }
//設欄位
function w_tb() { echo '<textarea name="comments" cols="100%" rows="8" style="display: none;"></textarea>'; }
//檢查
function gate( $commentdata ) {
$is_ping = in_array($commentdata['comment_type'], array('pingback', 'trackback'));
if ( $is_ping ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆懷疑這可能是 Spam! ]\n" . $commentdata['comment_content'] ;
}
if ( $_POST['comments'] != '' ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆判斷這是 Spam! ]\n" . substr($commentdata['comment_content'],0,50) . "...." ;
}
return $commentdata;
} }
$anti_spam = new anti_spam();
// -- END ----------------------------------------
?>
执行后,增加一栏隐藏栏,如果填了就是Spam,标记为Spam,截断50字长度,送出。使用截断50字功能是为了节省资料库空间。这已经是“小墙”的第二个版本,增加了对Trackbacks/Pingbacks的Spam拦截。要想获得“小墙”最新版,敬请关注Willin大侠的《小牆 - 防Spam就是這麼簡單》。
-
Spam无时无处不在!2009年05月10日 -
Wordpress 免插件实现评论分页导航2010年01月13日 -
Wordpress 评论链接重定向跳转2009年10月11日 -
给主题做了个大手术2009年10月9日
之前用一个验证码的 痛苦死了
这个方法好!!用了不错!
嘎嘎,总算让我看到一个靠谱的方法了!
很不错的原理
听懂原理没看懂代码……
学习了
akismit好像很不错了。
是的,不过我不用插件,呵呵
你用的这个方法?我能不能用?我博客用了那个验证机制,反应很强烈,都要求去掉!囧
可以啊,去掉那个插件,换上这个方法就行了
执行后,增加一栏隐藏栏,如果填了就是Spam,标记为Spam,截断50字长度,送出。使用截断50字功能是为了节省资料库空间。
这是什么意思?
spam是自动填写资料并发送的,spam不会辩认出这行隐藏栏,所以填写了这行隐藏栏的就是spam
既然判定为spam,那spam内容都是废话,无需多看,所以截断之后送出,节省数据库
我那里经常被骚扰
防止垃圾评论的嘛?
恩,是的,我现在用的就是这个方法
还是用插件哈,呵呵~
真的行吗?我试试看。
來看看, code 用了高亮不錯啊!
突然发现一个问题 等我上大学 你就奔三了 呜呜
我已经奔三了,只是离30还有一小段距离
炒饭
我妈在超凡 上来看看 沙发
孩子,你上网有时间限制?
你妈咪有没有在电脑上装“驴霸”呀?上H站要小心哟
驴霸把百度河蟹掉 我们就幸福了
这要能河蟹,那就是河蟹之王了!