修正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 3.8 开端的全新设计的后盾支持多颜色抉择,默许有八种十分精巧的配色,能够让用户本人抉择。 对...

WordPress博客效劳器环境配置

早就想搭建一个专属于本人的博客了,用来记载本人生存、学习的点点滴滴。之所以选WordPress,次要是由于它能...

把WordPress文章版权同时在注释下方和Feed中输入完成办法

此前,咱们只晓得给WordPress文章增加版权申明,文章标签、相干日志,但很少思考到把这些信息输入到Feed中。...

WordPress开发中自定义菜单的相干PHP函数应用简介

函数意义 wp_nav_menu () 自定义菜单显示函数 register_nav_menu () 自定义菜单注册函数 – 复数 register_...

wordpress动态化首页及去除url中的index.html

应用wordpass博客顺序的冤家都晓得他的默许首页是index.php,但是地球人都晓得index.html的太首页可以进步网...

WordPress重复呈现需求晋级数据库的处理办法

WordPress呈现&ldquo;需求晋级数据库&rdquo;普通是网站搬家,或许WordPress版本晋级会呈现。普通状况呈现的...

需求提交

客服服务