阻拦英文渣滓评论
因为绝大少数的渣滓评论都是英文的,所以国际不少冤家在应用 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 的装置前的一些预备工...
网站的要害字及网页形容关系网站对搜寻引擎的敌对水平,假如本人手动加显然太折腾了,那如何让wordpress博客...
但在制造主题的时分,每个用户的需要都不同,而且你也不可能在文章下方增加太多的内容。因而让用户能自定义...
明天在修正网站的时分,不小心把最新版Wordpress3.5.1的wp-includes目录下的functions.php笼罩出来了,招致...
用动态化当然能够处理这些成绩,不过关于流量不大的博客就没必要了。 wordpress自带有缓存体系,要害的函数...
首先,什么是以后博客?和独自站点不同的是,Multisite会产生多个博客,称之为blog,即子站点(包括主站点)...