修正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博客增加MP3播放器

首先到Flash MP3 Player 的主页上下载该顺序。解紧缩之后,将 mp3player.swf 和 ufo.js 两个文件放到效劳器...

将博客园(cnblogs.com)数据导入到wordpress的代码

我将这个分享进去,假如当前有谁需求能够间接下载上面插件 应用办法: 在cnblogs抉择备份数据,导出一个XML...

详解WordPress中用于更新和获取用户选项数据的PHP函数

update_user_option()函数 update_user_option()函数作用利用全局博客权限更新用户选项。 用户选项相似于用...

wp-Syntax wordpress高亮插件应用办法

首先简略理解下 wp-Syntax 插件,wp-Syntax 是一个针对wordpress的代码高亮插件,最大的优点是简略易用,兼...

Wordpress修正某篇文章ID(把ID为148的改成147)的SQL语句

4月更新过文章,文章ID停留在146,5月忙于考试,文章一篇都没写,后果6月前几天写文章的时分,ID从146间接跳...

WordPress中非插件完成嵌套回复成果的办法

博客吧转载了零号相册的Wordpress博客自带嵌套回复教程。 自带嵌套性能工作原理: wordpress嵌套回复的工作...

需求提交

客服服务