wordpress广告垃圾评论过滤(验证码、关键词)

方法一,给评论增加算术验证码

在主题目录的functions.php添加如下代码:

 代码如下 复制代码

    //算术验证码by vfhky
    function spam_provent_math(){
    $a=rand(5,15);
    $b=rand(5,15);
    echo "<input type='text' name='sum' id='sum' size='22' tabindex='3' value='动手又动脑,哦也 !' onfocus='if (this.value != "") {this.value = "";}' onblur='if (this.value == "") {this.value = "动手又动脑,哦也 !";}' /> = $a + $b (<font color='#0088DD'>防止机器人评论</font>)" ."<input type='hidden' name='a' value='$a'/>" ."<input type='hidden' name='b' value='$b'/>";
    }
    function spam_provent_pre($spam_result){
    $sum=$_POST['sum'];
    switch($sum){
    case $_POST['a']+$_POST['b']:break;
    case null:wp_die('亲,算个结果撒');break;
    default:wp_die('算错啦⊙?⊙b汗');
    }
    return $spam_result;
    }
    //注册用户or管理员则不需要验证
    if(!is_user_logged_in() && $comment_data['comment_type']==''){
    add_filter('preprocess_comment','spam_provent_pre');
    }

(二)在主题目录下的comments.php(不同的主题可能评论框的位置不同,有的主题可能在functions.php里面)中调用上述代码:

 代码如下 复制代码

    //根据是否是管理员来决定是否显示验证码
  <?php if(!isset($_COOKIE['comment_author_email_'.COOKIEHASH]))spam_provent_math();?>

方法二,利用程序进行关键过滤

在你的主题下面的functions.php里面添加如下代码即可

后台查看垃圾评论

 代码如下 复制代码
    // 单独使用禁止全英文评论代码
    function scp_comment_post( $incoming_comment ) {
    $pattern = '/[一-?]/u'; //验证是否为中文
    
    if(!preg_match($pattern, $incoming_comment['comment_content'])) {
    wp_die( "You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含中文!" );
    }
    return( $incoming_comment );
    }
    add_filter('preprocess_comment', 'scp_comment_post');
    
    
    //综合使用< <小??>> Anti-Spam v1.84 by Willin Kan.
    class anti_spam {
    function anti_spam() {
    if ( !current_user_can('read') ) {
    add_action('template_redirect', array($this, 'w_tb'), 1);
    add_action('init', array($this, 'gate'), 1);
    add_action('preprocess_comment', array($this, 'sink'), 1);
    }
    }
    // ??谖?br />
    function w_tb() {
    if ( is_singular() ) {
    // 非中文?系
    if ( stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh') === false ) {
    add_filter( 'comments_open', create_function('', "return false;") ); // ????
    } else {
    ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=(["'])comment(["'])(.+)/textarea>#",
    "textarea$1name=$2w$3$4/textarea><textarea name="comment" cols="100%" rows="4" style="display:none">/textarea>",$input);') );
    }
    }
    }
    // ?z查
    function gate() {
    $w = 'w';
    if ( !empty($_POST[$w]) && empty($_POST['comment']) ) {
    $_POST['comment'] = $_POST[$w];
    } else {
    $request = $_SERVER['REQUEST_URI'];
    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '??';
    $IP = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透?代理)' : $_SERVER["REMOTE_ADDR"];
    $way = isset($_POST[$w]) ? '手?硬僮?' : '未???表格';
    $spamcom = isset($_POST['comment']) ? $_POST['comment'] : '';
    $_POST['spam_confirmed'] = "?求: ". $request. "n?砺? ". $referer. "nIP: ". $IP. "n方式: ". $way. "n?热? ". $spamcom. "n -- ??成功 --";
    }
    }
    // ?理
    function sink( $comment ) {
    // 不管 Trackbacks/Pingbacks
    if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment;
    // 已?定? spam
    if ( !empty($_POST['spam_confirmed']) ) {
    // 方法一: 直接?醯? ? die(); 前面?尚本??h除即可.
    //die();
    // 方法二: ?擞?? spam, 留在?料??z查是否?判.
    add_filter('pre_comment_approved', create_function('', 'return "spam";'));
    $comment['comment_content'] = "[ 小??判?噙@是Spam! ]n". $_POST['spam_confirmed'];
    $this->add_black( $comment );
    } else {
    // ?z查?像
    $f = md5( strtolower($comment['comment_author_email']) );
    $g = sprintf( "http://%d.gravatar.com", (hexdec($f{0}) % 2) ) .'/avatar/'. $f .'?d=404';
    $headers = @get_headers( $g );
    if ( !preg_match("|200|", $headers[0]) ) {
    // ?]?像的列入待??(即当第一次留言时,需要审核)
    add_filter('pre_comment_approved', create_function('', 'return "0";'));
    //$this->add_black( $comment );
    }
    }
    return $comment;
    }
    // 列入黑名??br />
    function add_black( $comment ) {
    if (!($comment_author_url = $comment['comment_author_url'])) return;
    if ($pos = strpos($comment_author_url, '//')) $comment_author_url = substr($comment_author_url, $pos + 2);
    if ($pos = strpos($comment_author_url, '/')) $comment_author_url = substr($comment_author_url, 0, $pos);
    $comment_author_url = strtr($comment_author_url, array('www.' => ''));
    if (!wp_blacklist_check('', '', $comment_author_url, '', '', '')) update_option('blacklist_keys', $comment_author_url . "n" . get_option('blacklist_keys'));
    }
    }
    $anti_spam = new anti_spam();
    // -- END ----------------------------------------

    

最后记得把代码$2w$3$4中间的w和$w = 'w'的w改成其它英文字母(但是二者要一致),比如$2wc$3和$w = 'wc'等等,千万不要让spam发现额^^

时间: 2024-08-01 01:51:12

wordpress广告垃圾评论过滤(验证码、关键词)的相关文章

wordpress垃圾评论的验证码插件

考察了好多款wordpress垃圾评论的验证码插件: 有一长串字符的:明显不方便,放弃: 有英文加数字的:也不方便,放弃: 有潦草英文的:输入错误率太高,放弃: 有看问题,选答案的:浪费评论者时间且不一定做对题目,放弃: 有将图案拖拉到指定位置的:麻烦且不好玩,放弃: 有简单数字加减法的:这个算是最简单的了,可是还要改主题中的文件代码,也放弃了: 最后,选择了[WP Pineapple]这款wordpress垃圾评论的验证码插件,WP Pineapple 在评论表单中增加了4个水果图片,评论者只

怎样解决垃圾评论过滤插件

摘要: WordPress现在的使用是越来越广泛,wordpress这个玩意儿是从国外传过来的,wordpress也是国外SEO们使用最多的程序.同时与之而来的是相关SEO工具的开发也越来越多,技术也越来越高. 记得 WordPress现在的使用是越来越广泛,wordpress这个玩意儿是从国外传过来的,wordpress也是国外SEO们使用最多的程序.同时与之而来的是相关SEO工具的开发也越来越多,技术也越来越高. 记得曾经使用过的一个英文版的评论工具可以快速找到N多的wordpress博客,

wordpress屏蔽垃圾评论的方法

大部分垃圾评论都是用自动化软件来发的,它会先GET一个页面,然后再往wp-comments-post.php文件POST内容. 例如: "GET /archives/589.html HTTP/1.1" 200 8490 "POST /wp-comments-post.php HTTP/1.1" 302 26 垃圾评论当中80%以上都是福建莆田市IP发的,鄙视下. 1.使用插件 垃圾评论过滤:Akismet插件 wordpress评论滑动解锁:myQaptcha插件

WordPress屏蔽垃圾评论

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近一段时间被垃圾评论搞的头疼,要是隔几天没有登录后台的话,就会有上百条甚至几百条垃圾评论等待着你删除,因为评论里有一部分是真实的,所以在删除垃圾评论的过程中需要仔细一些,防止将读者的真实评论误删掉,有几次光清理垃圾评论就花了半小时左右的时间,让人叫苦连天啊. 前段时间我写了一篇<如何屏蔽wordpress的垃圾英文评论>的文章,

Wordpress的垃圾评论何去何从

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 Wordpress作为一个优秀的博客型CMS深受广大IT从业人士的喜爱,因此很多it行业从业人员出于各种原因都喜欢建设一个自己的独立域名的Wordpress,记录一下自己工作的心得,记录一下自己的人生.写一个属于自己的独立博客已经成为了生活中的一部分,而且还能推广一下自己,就算不能起到推广作用,单纯的记录一下自己的人生也不错. 武汉SEO刘俊

修改PHP脚本使WordPress拦截垃圾评论的方法示例_php技巧

拦截英文垃圾评论 由于绝大多数的垃圾评论都是英文的,所以国内不少朋友在使用 Some Chinese Please 插件,它可以有效地拦截内容中不带有中文字的comment和trackback(pingback),不写入数据库中,可有效地减小spam对blog服务器的无谓使用.虽然已经 2 年多没有更新,但还是可用的. 其实还可以简化下,直接将下面的代码添加到主题的 functions.php 文件,效果与使用 Some Chinese Please 插件相同: /* refused spam

WordPress将垃圾评论阻挡在门外

今天,翼帆远航将介绍两种把垃圾评论阻挡在门外的方法. 一般情况下,我们会使用著名的反垃圾评论插件:Akismet 来阻止垃圾评论的入侵,Akismet 会将所有识别出的垃圾评论分离出来,并提供一键清理垃圾评论的功能,虽然 Akismet 几乎能够 100% 识别出垃圾评论,但由于每天的垃圾评论实在太多,天天点"一键清理"也不是办法,有没有更加实用的解决方案,能将垃圾评论在提交之前先拦截下来呢?   我们先来分析垃圾评论的类型: 纯英文或含有日文.韩文等他国语言的垃圾评论 固定某个网站用

三招教你快速屏蔽WordPress垃圾评论

一般都是说加一些屏蔽过滤的函数之类的.其实都差不多.不过有些特别长的就显得有点累赘了.当然比起官方的垃圾过滤插件肯定功能没那么强大,但是最起码会让你的身材很好看.不会在你的数据库弄那么多东西进去.今天分享几个实用小代码吧,而且效果还不错.大家也可以试试,不错可以收藏一下. 第一招:禁止非法词汇评论提交到数据库,把下边的代码放到当前主题的 functions.php 里,然后在后台"讨论"中设置你的黑名单即可. //禁止垃圾评论提交到数据库 function Banfuckspam($c

彻底的杜绝wordpress垃圾评论的方法

wordpress的垃圾评论可是异常的多啊,不过好在wordpress自带的插件能屏蔽80%以上的垃圾评论,机器自动发的,都被存到了垃圾评论里面. 今天看了看,垃圾评论每秒至少5个,虽然大部分垃圾评论被阻止了,但这样频繁的操作数据库,不仅数据库被搞大了,而且经常还有些漏网之鱼,导致我邮箱是不是弹出你有评论待审核,非常的烦啊.   网上搜索了下,很多垃圾评论插件,比如加验证码啥的,虽然有用,但是损害了用户体验呐.根据以往搞SEO的经验,也群发过垃圾信息. 这类垃圾评论都是先网上搜索对应的接口文件,