这两天不停地收到垃圾评论,都是一些乱七八糟的英文和俄文评论,因为我为了及时的看到大家的留言,所以设置的邮箱是139邮箱,结果每收到一个垃圾评论手机就来条短信,简直快要把我折腾死了,实在没有办法,我又祭出了Google大神,总算找到了两个不用插件的简单方法,这下清净了……
常见的垃圾评论有:机器写入的全英文(罗马字)垃圾评论和人工写入的长篇大论的中文广告两种
针对“机器写入的全英文(罗马字)垃圾评论”,网上有人推荐采用“some Chinese please!”插件,因为在通常情况下,用中文写作的blog,其留言、trackback和pingback应该也是包含中文字的。 那么,只要拦截下不包含中文字的留言、trackback和pingback,那么blog接收到spam的概率将大大降低,接近于0。 SCP在留言、trackback和pingback发送到 blog,保存到数据库前,将检查他们是否包含有中文字。 如有,将通过检查保存到数据库中;如没有,将拦截,并返回出错的字句,而且将不保存到数据库中。
即要求写入至少一个中文字符(英文博客例外),这样就无法写入数据库了,而且不影响用户体验,也有人推荐采用验证码,但我感觉验证码很影响用户体验,所以我就没有采用。
不过,我研究了下Some Chinese Please插件,发现实现其主要功能几行代码即可。
用文本编辑器打开 WordPress安装目录下的wp-comments-post.php,查找
1.// If the user is logged in
好,将其替换成:
1.$pattern = '/[一-龥]/u';
2.
3.if(!preg_match_all($pattern, $comment_content, $match)){
4. wp_die( "You should type some Chinese word (like \"你好\") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!" );
5.}
6.
7.// If the user is logged in
以上代码实现的基本原理是,判断评论内容是否包含汉字,如果一个汉字都没有,则给出错误提示,评论无法提交,这样垃圾评论也没有存储到数据库中,达到了屏蔽英文垃圾评论的目的。最后以 UTF-8 编码将wp-comments-post.php另存为,覆盖原文件(否则你的博客评论会出错),上传到你的博客空间,一切OK!刷新你的博客,试试在文章评论中输入一串英文字母,看看有什么效果!当然,现在你也可以在我的评论框中输入一串英文,看看什么效果!
针对人工写入的长篇大论的中文广告可采用如下代码防止
在wp-comments-post.php文件的
if ( ” == $comment_content )
wp_die( __(‘Error: please type a comment.’) );
后面加上
if (strlen($comment_content) > ***(设定的评论字数) )
wp_die( __(‘Error: 请您讲重点!’) );
if (strlen($comment_content) < 2 )
wp_die( __(‘Error: 您一字千金吗?’) );
采用了以上两种方法,完全可以防止中英文的垃圾评论,而且一点不影响用户体验,这下好了,现在就可以停掉Akismet和Some Chinese Please这两款插件了。
Most of the times blogs are the same but i honestly enjoyed what i read. Cheers !
哥,你好,太感谢了,操作成功,
就是已经有评论成功的用户,好象是可以采用纯英文评论的。
如果是新用户名,用纯英文就不能成功评论。
我现在在用小墙,这个貌似3.01不能用,不怎么清楚……
好象不行啊,我试了下,你看下面那个没有汉字评论也显示出来 了。
KDJFFLVK LKFD;LFK;F
呵呵 来了 博客挺简洁的哦。 我今天也遇到了这个问题,唉。咋有这么多无聊的人在博客上制造垃圾评论呢?我怀疑他们是不是用工具搞的啊?
很多都是俄罗斯的垃圾老毛子用工具制造的
我弄而来,无法回复评论
I’m Leifeng.
这段时间我的垃圾评论很少!呵呵
不过,我研究了下Some Chinese Please插件,发现实现其主要功能几行代码即可。
请问,这是你研究出来的?
这个……还真不是,我通过谷歌在一个论坛看到的这部分内容……原话是这样的,俺没有修改,窘……