修正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是支流的 Blog 搭建平台。 WordPress 能够说是世界上目前最先进的 weblog 顺序。目前开发的顺...

用wordpress制造网站的步骤

在没有本人的网站的时分很想领有一个属于本人的网站,能够说是本人的一个欲望吧。然而当我真正的运转起来了...

以WordPress为例解说jQuery丑化页面Title的办法

这里选取的例子,便是 WordPress 中比拟有名的丑化超链接Title成果,普通的 title 成果是把鼠标放到 a 元素...

10 个适用的 WordPress 技巧教程 推荐珍藏

1、主动向 WordPress 编辑器拔出文本 编辑以后主标题录的 functions.php 文件,并粘贴以下代码: 复制代码代...

WordPress特定文章对搜寻引擎暗藏或只容许搜寻引擎查看

对搜寻引擎暗藏特定的文章 这个成绩的起源是这样的: 家喻户晓,随着搜寻引擎的改进,会越来越排挤采集和伪...

wordpress增加顶级菜单完成思绪

比方本人创立了一个主题,那么需求在后盾增加一些设置选项,所以就触及到了后盾增加顶级菜单的需要: 复制代...

需求提交

客服服务

亿鸽在线客服系统