wordpress非插件自动屏蔽垃圾评论汇总

正在很努力的加载中...

垃圾评论层出不穷,从上周到现在两周竟然有400多条英文和垃圾的评论。有些评论一看就是广告,不过绝大部分是链接和英文。

对于垃圾评论我最近使用了一款插件,可以有效的屏蔽,一直没有遇到误判情况。名为”NoSpamNX“,大家可以在后台直接搜,安装启用就行,不用设置。

另外更简单的办法当然是不用插件了。大家都知道,插件多了会加重服务器负担。当然插件多少和网站打开速度没有关系。有关系的只有插件中的js文件。js多的话会影响的。所以大家都宁可不用插件。好了,言归正传。

一、WordPress自动拒绝垃圾评论


将以下代码粘贴到你的主题functions.php模板中。

任何包含在$ bad_comment_content数组内的字符,将会被自动拒绝留言。

function in_comment_post_like($string, $array) {     
    foreach($array as $ref) { if(strstr($string, $ref)) { return true; } }     
    return false;    
}    
function drop_bad_comments() {    
    if (!emptyempty($_POST['comment'])) {    
        $post_comment_content = $_POST['comment'];    
        $lower_case_comment = strtolower($_POST['comment']);    
        $bad_comment_content = array(    
            ’viagra’,     
            ’hydrocodone’,    
            ’hair loss’,    
            ’xanax’,    
            ’tramadol’,    
            ’russian girls’,    
            ’russian brides’,    
            ’lorazepam’,    
            ’adderall’,    
            ’dexadrine’,    
            ’no prescription’,    
            ’oxycontin’,    
            ’without a prescription’,    
            ’sex pics’,    
            ’family incest’,    
            ’online casinos’,    
            ’online dating’,    
            ’cialis’,    
            ’best forex’,    
            ’amoxicillin’    
        );    
        if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {    
            $comment_box_text = wordwrap(trim($post_comment_content), 80, “\n  ”, true);    
            $txtdrop = fopen(‘/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt’, ’a');    
            fwrite($txtdrop, “  ————–\n  [COMMENT] = ” . $post_comment_content . “\n  ————–\n”);    
            fwrite($txtdrop, “  [SOURCE_IP] = ” . $_SERVER['REMOTE_ADDR'] . “ @ ” . date(“F j, Y, g:i a”) . “\n”);    
            fwrite($txtdrop, “  [USERAGENT] = ” . $_SERVER['HTTP_USER_AGENT'] . “\n”);    
            fwrite($txtdrop, “  [REFERER  ] = ” . $_SERVER['HTTP_REFERER'] . “\n”);    
            fwrite($txtdrop, “  [FILE_NAME] = ” . $_SERVER['SCRIPT_NAME'] . “ - [REQ_URI] = ” . $_SERVER['REQUEST_URI'] . “\n”);    
            fwrite($txtdrop, ’————–**********——————’.“\n”);    
            header(“HTTP/1.1 406 Not Acceptable”);    
            header(“Status: 406 Not Acceptable”);    
            header(“Connection: Close”);    
            wp_die( __(‘bang bang.’) );    
        }    
    }    
}    
add_action(‘init’, ’drop_bad_comments’);    

以上代码可以自动屏蔽机器发的留言,但是不能屏蔽人为发的留言。

二、屏蔽指定内容的防垃圾代码


1、以下代码不允许评论中只有英文或者出现<a 随便 href=” 或者rel=”nofollow”或者”http://“如果你的主题没有使用ajax评论,那么请将下列代码添加到function.php中。

function lianyue_comment_post( $incoming_comment ) {    
$pattern = ’/[一-龥]/u’;    
$http = ’/[href="|rel="nofollow"|http:\/\/|<\/a>]/u’;  
// 禁止全英文评论  
if(!preg_match($pattern, $incoming_comment['comment_content'])) {  
wp_die( ”您的评论中必须包含汉字!“ );  
}elseif(preg_match($http, $incoming_comment['comment_content'])) {  
wp_die( ”万恶的发贴机!” );    
}    
return( $incoming_comment );    
}    
add_filter(‘preprocess_comment’, ’lianyue_comment_post’);    

2、如果你的主题使用了ajax评论那么请将下列代码添加到ajax文件合适位置。本主题(风云主题)请将下列代码添加到comments-ajax.php中最后一个个err( __(的下一行。

$pattern = ’/[一-龥]/u’;    
if (!preg_match($pattern,$comment_content) )    
err( __(‘您的评论中必须包含汉字!’) );    
$http = ’/[href="|rel="nofollow"|http:\/\/|<\/a>]/u’;    
if (preg_match($http,$comment_content) )    
err( __(‘万恶的发贴机!’) );    

以上代码中的汉字大家可以任意改动。

文章出自:http://www.zuifengyun.com/block-spam-non-review-summary.html 版权所有,除注明外皆为原创。文章仅为作者个人观点,不代表醉风云立场。

正在很努力的加载中...

关于本文作者:HuiSir

建站爱好者,互联网评论家,网页视觉设计师

  1. 我想把评论中的那个那输入网址去了怎么搞呀

    • 确实是,我现在也愁垃圾评论,实在没办法了。道高一尺魔高一丈 ❓

      • 因为做博客评论群发的几乎都是外贸站,不是英文就是日文!干脆 😛 那就启用Akismet插件直接处理算了!

  2. 这个代码高亮是怎么实现的???实验了几个插件,启用后网站就崩溃了,删除文件后才恢复

    • 使用代码高亮转换器:CodeRenderUnmi下载地址http://pan.baidu.com/share/link?shareid=1648827241&uk=4162433433 复制用这个工具生成的 HTML 代码粘贴到你的文章编辑器(代码模式) 就行了

  3. 代码添加到comments-ajax.php中最后一个个err( __(的下一行。

    err(__(‘您发表评论也太快了’));
    $pattern = ‘/[一-龥]/u’;
    if (!preg_match($pattern,$comment_content) )
    err( __(‘您的评论中必须包含中文汉字!’) );
    $http = ‘/[href=”|rel=”nofollow”|http:\/\/|]/u’;
    if (preg_match($http,$comment_content) )
    err( __(‘万恶的发贴机!’) );
    }
    }

    是否是以上代码?没有错啊?为什么不行?

    • 配合上面一、WordPress自动拒绝垃圾评论 那段很长的代码啊。放到functions.php里 你的英文评论是机器发的啊

  4. 为什么没有效果?还是能纯英文留言呀。。。这几天博客老是垃圾英文留言 烦死了!

  5. 我是觉得既然准备过滤评论了,再开个文件写日志,不是有点多此一举了。。。