技术前线-绿色安全的源码下载站!
首 页文章资讯下载中心html颜色代码表
当前位置:技术前线文章资讯网站建设

Wordpress自动将包含长链接的评论标记为垃圾评论

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2014-10-31 17:43:05

现在大量的机器可以直接对WordPress博客进行评论并带有大量的连接,这些带链接评论我们定为垃圾评论了,下面我来给大家介绍几款自动将包含长链接的评论标记为垃圾评论实例.

方法一:此方法依旧是来自 Willin Kan 大师(可惜他已经退出WordPress圈),折腾很简单,直接将下面的代码放到主题的functions.php文件的最后一个 ?>前面即可,代码如下:

  1. // 垃圾评论拦截 
  2. class anti_spam { 
  3.  function anti_spam() { 
  4.      if ( !current_user_can('level_0') ) { 
  5.        add_action('template_redirect'array($this'w_tb'), 1); 
  6.        add_action('init'array($this'gate'), 1); 
  7.        add_action('preprocess_comment'array($this'sink'), 1); 
  8.   } 
  9.    } 
  10.  function w_tb() { 
  11.     if ( is_singular() ) { 
  12.       ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=(["'])comment(["'])(.+)/textarea>#"
  13.       "textarea$1name=$2w$3$4/textarea><textarea name="comment" cols="100%" rows="4" style="display:none"></textarea>",$input);') ); 
  14.     } 
  15.   } 
  16.   function gate() { 
  17.     if ( !emptyempty($_POST['w']) && emptyempty($_POST['comment']) ) { 
  18.       $_POST['comment'] = $_POST['w']; 
  19.     } else { 
  20.       $request = $_SERVER['REQUEST_URI']; 
  21.       $referer = isset($_SERVER['HTTP_REFERER'])         ? $_SERVER['HTTP_REFERER']         : '隐瞒'
  22.       $IP      = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透过代理)' : $_SERVER["REMOTE_ADDR"]; 
  23.       $way     = isset($_POST['w'])                      ? '手动操作'                       : '未经评论表格'
  24.       $spamcom = isset($_POST['comment'])                ? $_POST['comment']                : null; 
  25.       $_POST['spam_confirmed'] = "请求: "$request"n来路: "$referer"nIP: "$IP"n方式: "$way"n?热? "$spamcom"n -- 记录成功 --"
  26.     } 
  27.   } 
  28.   function sink( $comment ) { 
  29.     if ( !emptyempty($_POST['spam_confirmed']) ) { 
  30.       if ( in_array( $comment['comment_type'], array('pingback''trackback') ) ) return $comment
  31.       //方法一: 直接挡掉, ? die(); 前面两斜线?h除即可. 
  32.       die(); 
  33.       //方法二: 标记为 spam, 留在资料库检查是否误判. 
  34.       //add_filter('pre_comment_approved', create_function('', 'return "spam";')); 
  35.       //$comment['comment_content'] = "[ 小墙判断这是 Spam! ]n". $_POST['spam_confirmed']; 
  36.     } 
  37.     return $comment
  38.    } 
  39.  } 
  40.  $anti_spam = new anti_spam(); 

这个方法可以阻止98%以上的垃圾评论,当然了,倡萌还建议你审核第一次提交的评论人的评论,设置审核后才显示,如果遇到垃圾评论,将其email、IP、网址等添加到黑名单即可,下面是倡萌目前的评论设置,你可以在WP后台-设置-讨论下设置.

方法二:自动拒绝包含特定关键词的垃圾评论,将下面的代码添加到主题的functions.php文件,自己根据需要,修改 $ bad_comment_content 数组的内容,任何包含在$ bad_comment_content 数组内的字符,将会被自动拒绝留言,代码如下:

  1. function in_comment_post_like($string$array) {    
  2.     foreach($array as $ref) { if(strstr($string$ref)) { return true; } }    
  3.     return false;   
  4. }   
  5. function drop_bad_comments() {   
  6.     if (!emptyempty($_POST['comment'])) {   
  7.         $post_comment_content = $_POST['comment'];   
  8.         $lower_case_comment = strtolower($_POST['comment']);   
  9.         $bad_comment_content = array(   
  10.             'viagra',    
  11.             'hydrocodone',   
  12.             'hair loss',   
  13.             'xanax',   
  14.             'tramadol',   
  15.             'russian girls',   
  16.             'russian brides',   
  17.             'lorazepam',   
  18.             'adderall',   
  19.             'dexadrine',   
  20.             'no prescription',   
  21.             'oxycontin',   
  22.             'without a prescription',   
  23.             'sex pics',   
  24.             'family incest',   
  25.             'online casinos',   
  26.             'online dating',   
  27.             'cialis',   
  28.             'best forex',   
  29.             'amoxicillin'   
  30.         );   
  31.         if (in_comment_post_like($lower_case_comment$bad_comment_content)) {   
  32.             $comment_box_text = wordwrap(trim($post_comment_content), 80, "n  ", true);   
  33.             $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt''a');   
  34.             fwrite($txtdrop"  --------------n  [COMMENT] = " . $post_comment_content . "n  --------------n");   
  35.             fwrite($txtdrop"  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "n");   
  36.             fwrite($txtdrop"  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "n");   
  37.             fwrite($txtdrop"  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "n");   
  38.             fwrite($txtdrop"  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "n");   
  39.             fwrite($txtdrop'--------------**********------------------'."n");   
  40.             header("HTTP/1.1 406 Not Acceptable");   
  41.             header("Status: 406 Not Acceptable");   
  42.             header("Connection: Close");   
  43.             wp_die( __('bang bang.') );   
  44.         }   
  45.     }   
  46. }   
  47. add_action('init''drop_bad_comments'); 

今天再补充下,自动将包含长链接的评论标记为垃圾评论,将下面的代码添加到主题的 functions.php 文件即可:

  1. function rkv_url_spamcheck( $approved , $commentdata ) { 
  2.     return ( strlen$commentdata['comment_author_url'] ) > 50 ) ? 'spam' : $approved
  3.   } 
  4.  add_filter( 'pre_comment_approved''rkv_url_spamcheck', 99, 2 ); 

注意看第二行的 50,根据自己的需要修改这个数值,如果你希望将所有带有链接(不管是否是长链接)的评论内容都自动标记为垃圾评论,将 50 改为 1 即可.

Tags:

作者:佚名
+0
-0

用户名: 查看更多评论

内 容:

         验证码:

所有源码和资料均为软件作者提供和网友推荐收集整理而来,仅供学习和研究使用。如有侵犯你版权的,请来信指出,本站将立即改正。

关于本站 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 网站地图 | 资源sitemap | 文章sitemap

Copyright © 2014-2026 技术前线. All Rights Reserved .

Powered by:源码下载www.gaoitde.com 页面执行时间:14,265.63000 毫秒 建站时间:2014-09-28        网站备案:渝ICP备14007251号-1