网站地图    收藏   

主页 > 后端 > wordpress教程 >

WordPress自动禁止包含特定关键词的垃圾评论 - W

来源:自学PHP网    时间:2014-11-28 23:42 作者: 阅读:

[导读] 其实过滤特定关键词垃圾评论很简单,先我们定义一个关键词文件,然后当用户提示评论时我们遍历关键词文件进行strstr判断即可实现了 方法简介:将以下代码添加到WordPress博客主题的fun...

WordPress自动禁止包含特定关键词的垃圾评论

其实过滤特定关键词垃圾评论很简单,先我们定义一个关键词文件,然后当用户提示评论时我们遍历关键词文件进行strstr判断即可实现了.

方法简介:将以下代码添加到WordPress博客主题的functions.php文件中,根据自己的需要修改 $ bad_comment_content 数组的内容,任何包含在$ bad_comment_content 数组内的字符都将会被自动拒绝留言!

代码如下:

  1. //拒绝包含特定关键词的垃圾评论 
  2. function in_comment_post_like($string$array) { 
  3.     foreach($array as $ref) { if(strstr($string$ref)) { return true; } } 
  4.     return false; 
  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.             '不要乱发'
  11.             'baidu.com'
  12.             'www.phpfensi.com'
  13.             'www.phpfensi.com'
  14.             'is' 
  15.         ); 
  16.         if (in_comment_post_like($lower_case_comment$bad_comment_content)) { 
  17.             $comment_box_text = wordwrap(trim($post_comment_content), 80, "n  ", true); 
  18.             $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt''a'); 
  19.             fwrite($txtdrop"  --------------n  [COMMENT] = " . $post_comment_content . "n  --------------n"); 
  20.             fwrite($txtdrop"  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "n"); 
  21.             fwrite($txtdrop"  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "n"); 
  22.             fwrite($txtdrop"  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "n"); 
  23.             fwrite($txtdrop"  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "n"); 
  24.             fwrite($txtdrop'--------------**********------------------'."n"); 
  25.             header("HTTP/1.1 406 Not Acceptable"); 
  26.             header("Status: 406 Not Acceptable"); 
  27.             header("Connection: Close"); 
  28.             wp_die( __('bang bang.') ); 
  29.         } 
  30.     } 
  31. add_action('init''drop_bad_comments'); 

现在全英文的垃圾评论也不洗,我们可以限制一下.

刚一发我就扒过来了~~~~来自v7v3修改自知更鸟,一般的spammer都是外国人,第一次发布绝对是全英文,所以第一次可以挡住80%的垃圾评论!根据email来判断是否为同一人,如果是,并且第一次没有使用全英文评论,即可正常发言不受限制,再加上常见的敏感关键词,多数的英文、日文评论都不在话下,放至主题文件中functions.php:

  1. function v7v3_en($comment) { 
  2.  $pattern = '/[一-?]/u';   
  3.  $cau=$comment['comment_author'] ; 
  4.  $cem=$comment['comment_author_email'] ;  
  5.  global $wpdb
  6.  $ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$cau' AND comment_author_email = '$cem' and comment_approved = '1' LIMIT 1"); 
  7.  if( is_user_logged_in() || 1 == $ok_to_comment ){ return $comment; }  
  8.  elseif ( !preg_match_all($pattern$ccontent$match) ) { 
  9.   exit(' 
  10. <head><meta http-equiv="Content-Type" content="text/html; charset=utf8"/></head> 
  11. 初次评论不允许纯英文哦~<a href="javascript:history.go(-1);">向上一页</a>'); 
  12.  }  
  13. }  
  14. add_filter('preprocess_comment''v7v3_en');  
  15. function v7v3_comment_post( $incoming_comment ) { 
  16. $http = '/[<|KTV|ッ|の|ン|??|?I|グ|?|]/u'
  17. if(preg_match($http$incoming_comment['comment_content'])) { 
  18. wp_die( " 
  19. <head><meta http-equiv='Content-Type' content='text/html; charset=utf8'/></head> 
  20. 您的评论包含敏感关键词,被系统判断为垃圾评论!<a href='javascript:history.go(-1);'>向上一页</a>" ); 
  21. return$incoming_comment ); 
  22. add_filter('preprocess_comment''v7v3_comment_post'); 

最后还可以使用wordpress评论黑名单功能

1、登陆Wordpress后台→设置→讨论→评论黑名单(内容可自行修改为合适自己博客的)到评论黑名单,点击保存即可,代码如下:

www.phpfensi.com

原理:垃圾站收集垃圾评论常见词库,出现此类词汇的垃圾评论一律被Wordpress后台直接消灭!

2、修改Wordpress主题functions.php文件[修改前注意备份文件]

注:本站使用comments-ajax.php处理提交,用err输出错误信息,如果贵站没有使用comments-ajax.php,那么请用wp_die输出错误信息!

方法:将下面代码中的err换成wp_die,否则会出现500错误,代码如下:

  1. //评论外链数检测 
  2. function BYMT_spamlinks($comment) { 
  3. $spamlinks = preg_match_all( '/<a [^>]*href/i'$comment['comment_content'], $out ); 
  4. if ($spamlinks>1){ //1为允许的链接数量 
  5. err(__('抱歉,检测到评论外链过多,请重写')); 
  6. else { 
  7. return $comment
  8. add_filter('preprocess_comment''BYMT_spamlinks'); 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论