修正PHP脚本使WordPress阻拦渣滓评论的办法示例

阻拦英文渣滓评论

因为绝大少数的渣滓评论都是英文的,所以国际不少冤家在应用 Some Chinese Please 插件,它能够无效地阻拦内容中不带有中文字的comment和trackback(pingback),不写入数据库中,可无效地减小spam对blog效劳器的无谓应用。尽管曾经 2 年多没有更新,但还是可用的。

其实还能够简化下,间接将上面的代码增加到主题的 functions.php 文件,成果与应用 Some Chinese Please 插件相反:

/* refused spam */ 
function refused_spam_comments( $comment_data ) { 
$pattern = '/[一-龥]/u'; 
if(!preg_match($pattern,$comment_data['comment_content'])) { 
err('评论必需含中文!'); 
} 
return( $comment_data ); 
} 
add_filter('preprocess_comment','refused_spam_comments');

@Teddysun http://teddysun.com/ 通过实测反馈,Wordpress中并没有err这个函数(这个函数兴许是存在于 @知更鸟 的主题里)。因而不会有提醒信息呈现。最好还是用wp_die函数,这样就会有提醒信息。所以,下面的代码假如不失效,能够应用以下代码:

/* refused spam */ 
function refused_spam_comments( $comment_data ) { 
$pattern = '/[一-龥]/u'; 
if(!preg_match($pattern,$comment_data['comment_content'])) { 
wp_die('评论必需含中文!'); 
} 
return( $comment_data ); 
} 
add_filter('preprocess_comment','refused_spam_comments');

针对那些应用技术手段,比方GET、POST等形式不填写前台表单,间接读取后盾顺序文件的spam,只有屏蔽IP能力缓解疯狗一样的守势,其它什么验证码、滑动解锁等等都没用。

制止某些IP拜访

能够在.htaccess文件中增加:

Order Deny,Allow 
Deny from xxx.xxx.xxx.xx 
Deny from xxx.xxx.xxx.xx

阻拦中文渣滓评论

假如发现大量渣滓评论是中文,那么能够用Willin Kan 写的小墙工具, 实践上能够 100% 屏蔽机器人收回的 spam. 假如是天然人提交评论, 小墙会在评论提交表单中加一个 hidden 变量, 假如后盾检测不到这个变量, 则认定为 spam, 能够抉择需求审核, 也能够间接过滤掉.

假如对方晓得你用的 hidden 变量或许应用虚构点击, 就能够破掉小墙. 然而 spam 原本就是小老本和以量取胜的事件, 除非与你与 spammer 结仇了, 我置信人家不会那么无聊来破你小墙. 而且机器人 spam 的数量占了绝大少数, 这个工具很有必要.

貌似 Willin 如今不必 WordPress 了, 网站也正在保护, 小墙代码我就贴在上面. 应用办法很简略, 拷贝到 function.php 文件最初即可. 其中 wall 是暗藏要害字, 有需求的请自行更改 (不改也能够).

class anti_spam {
 //建设
 function anti_spam() {
 if ( !current_user_can('level_0') ) {
  add_action('template_redirect', array($this, 'w_tb'), 1);
  add_action('init', array($this, 'gate'), 1);
  add_action('preprocess_comment', array($this, 'sink'), 1);
 }
 }
 
 //設欄位
 function w_tb() {
 if ( is_singular() ) {
  ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#",
  "textarea$1name=$2wall$3$4/textarea><textarea name=\"comment\" cols=\"50\" rows=\"4\" style=\"display:none\"></textarea>",$input);') );
 }
 }
 
 //檢查
 function gate() {
 ( !empty($_POST['wall']) && empty($_POST['comment']) ) ? $_POST['comment'] = $_POST['wall'] : $_POST['spam_confirmed'] = 1;
 }
 
 //處理
 function sink( $comment ) {
 if ( !empty($_POST['spam_confirmed']) ) {
  //办法一:间接擋掉, 將 die(); 后面兩斜線刪除即可.
  //die();
  //办法二:標記為spam, 留在資料庫檢查能否誤判.
  //add_filter('pre_comment_approved', create_function('', 'return "spam";'));
  /*
  $is_ping = in_array( $comment['comment_type'], array('pingback', 'trackback') );
  $comment['comment_content'] = ( $is_ping ) ?
  "◎ 這是 Pingback/Trackback, 小牆懷疑這可能是 Spam!\n" . $comment['comment_content'] :
  "[ 小牆判斷這是Spam! ]\n" . $comment['comment_content'];
  */
  // MG12 的處理办法
  $is_ping = in_array( $comment['comment_type'], array('pingback', 'trackback') );
  if(!$is_ping) {
  die();
  }
 }
 return $comment;
 }
}
new anti_spam();


计算前端解决工夫

在输出框上方用 JavaScript 取一个工夫戳作为全局变量, 在提交表单的时分获取提交工夫, 两个工夫相减, 假如小于可能值, 则视为机器人. 判别为机器人的评论你能够按小墙的形式解决, 也能够不解决 (不占用效劳器资源, 但不能记载 spam 信息).

**与小墙, 这种办法愈加牢靠, 但绝不是没有破绽, 只需 spammer 做个 setTimeout 提早公布就破了.

工夫戳

老掉牙的方机器人办法, 很适用, 但有**的缺陷: 用户体验不好. 要求访客多填一个很难察看的数字, 重大打压评论者踊跃性. WordPress 平台有很多这类插件能够用, 但我是不倡议应用的.

以上就是安达网络工作室关于《修改PHP脚本使WordPress拦截垃圾评论的方法示例》的一些看法。更多内容请查看本栏目更多内容!

本文相关话题: WordPress 垃圾评论 PHP PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
WordPress统计以后页面数据库查问次数及耗费工夫的办法

本文实例讲述了WordPress统计以后页面数据库查问次数及耗费工夫的办法。分享给大家供大家参考。详细剖析如下...

WordPress 3.0 十大看点 CMS性能进一步加强

1. 自定义用户名和明码 新版本一开端就会给用户惊喜! 目前咱们装置WordPress之后,零碎会给咱们一个用户ad...

WordPress中Gravatar头像缓存到本地及相干优化的技巧

将Gravatar寰球通用头像缓存的目的在于放慢网站的关上速度,由于Gravatar官网的效劳器在国外,加上伟大的GF...

利用Fix Rss Feeds插件修复WordPress的Feed显示谬误

明天忽然有个网友留言说博客的Feed挂了,症状如下: Chrome间接关上订阅页面显示如下: This page contain...

WordPress开发中短代码的完成及相干函数应用技巧

其实完成短代码很简略,咱们只要要用到 WordPress 外面的一个函数就能够搞定短代码,外加本人的一个小函数,...

在wordpress可视化编辑器中输出带缩进的代码

在WordPress中,咱们发如今写文章时,可视化模式下会对html代码进行清算,例如对<>等符号转化为html实体,对...

需求提交

客服服务