非插件实现拦截无中文留言

2013年05月13日11:22:59 27 1,522

Some Chinese Please插件可以拦截不带中文字的留言,本博客一直在用效果不错,不写入数据库,可有效地减少spam对服务器的无谓使用,其实可以将插件简化一下,直接用代码实现。

将下面代码加到主题functions模板文件中,效果与使用插件相同。

  1. /* refused spam */  
  2. function refused_spam_comments( $comment_data ) {  
  3. $pattern = '/[一-龥]/u';  
  4. if(!preg_match($pattern,$comment_data['comment_content'])) {  
  5. wp_die('评论必须含中文!');  
  6. }  
  7. return$comment_data );  
  8. }  
  9. add_filter('preprocess_comment','refused_spam_comments');  

 

注:如果使用的是HotNews主题,请将 wp_die 替换为 err,否则显示错误信息时,会造成模版错位,其它使用ajax评论的主题也可参照修改。

其它一些写入数据库的防spam插件不建议使用, 比如WordPress官方的防垃圾插件Akismet会在数据库中留下大量的信息,增加服务器负担。

针对那些使用技术手段,比如GET、POST等方式不填写前台表单,直接读取后台程序文件的spam,只有屏蔽IP才能缓解疯狗一样的攻势,其它什么验证码、滑动解锁等等都没用。

可以在.htaccess文件中添加:

  1. Order Deny,Allow  
  2. Deny from xxx.xxx.xxx.xx  
  3. Deny from xxx.xxx.xxx.xx  

禁止某些IP访问。

 

weinxin
我的微信
分享交流WordPress经验与技巧,关注前端设计与网站制作。仅用于功能演示。
Begin主题购买
Begin主题购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:27   其中:访客  22   博主  5

    • Win7en乐园 8

      鸟哥有心了!

      • Teddysun 2

        代码里的
        $pattern = ‘/[一-龥]/u’;
        就是匹配判断中文所有字符的么?
        看起来像乱码一样。

        • Teddysun 2

          邮件收到博主的回复,点进来一看,在原有的评论下面却并没有看到。
          是bug吗?

          • Teddysun 2

            不使用wp_die函数的话,wordpress是没有err函数的。
            经过我在3.5.1版本里测试,err函数并不存在。
            难道是博主的主题里有这样的err函数么?

              • 知更鸟 Admin

                @Teddysun 是我刚才数据回档了
                既然都是PHP使用err没什么问题,可以在此测试无中文留言,看看效果

                  • Teddysun 2

                    @知更鸟 err函数在博主这边是OK的。
                    我在本地测试的时候,是无弹出消息的。是会跳转到wp-comments-post.php这个页面。
                    所以,最后我改成了wp_die

                      • 知更鸟 Admin

                        @Teddysun 可能是我的主题使用了ajax评论的原因

                  • 电视包装网 3

                    求助老大啊我换了主机空间后,升级到最新版的wp后,在前台登录的话登录按钮不便,点击文章后才出管理员已登录的提示,到后台我更新以前的文本小工具但是前台还是以前那个工具啊,但是后台确实更新了,求解啊

                      • 知更鸟 Admin

                        @电视包装网 因为你安装了静态缓存插件WP-Super-Cache
                        这种插件对个人小博没有任何P用
                        可以阅读下面这篇关于静态化的文章
                        http://zmingcx.com/static-caching-plugin.html

                          • Teddysun 2

                            @知更鸟 安装WP-Super-Cache静态化,还有一个功能我想博主应该会知道的,那就是防F5暴力刷新。
                            一个Wordpress博客不作任何缓存或者静态的话,只需简简单单F5键按住,狂刷页面就会把mysql刷爆。

                              • 知更鸟 Admin

                                @Teddysun 恶意攻击,弄成静态能有多大用处

                              • 电视包装网 3

                                @知更鸟 误会啊,插件WP-Super-Cache是我今天刚装的啊,由于不更新我查看网上资料,有人说要我清理缓存,我就安装了插件WP-Super-Cache,之前一直是禁止的缓存

                                • 电视包装网 3

                                  @知更鸟 我现在直接卸载了那个插件还是不行哦,前天登录了,还是各种登录就是不出现控制台的连接哦

                                  • 电视包装网 3

                                    @知更鸟 鸟哥我现在取消了所有的插件,重新装了一遍主题还是那个效果啊,现在只有直接输入后台登录地址才能进入后台,前天登录的怎么都登录不上

                                      • 知更鸟 Admin

                                        @电视包装网 我只想告诉你这个问题与主题没P关系
                                        先学会如何安装与卸载静态缓存插件…..
                                        外话,静态缓存插件菜鸟必备,人云亦云,注定杯具…

                                          • LoveQishi 1

                                            @知更鸟 @知更鸟 : 评论@回复有点问题,显示非法字符,怎么解决

                                    • sensual massage london 1

                                      感谢鸟哥分享~

                                      • 翩翩飞舞 1

                                        这个很不错,最近的垃圾英文留言很烦

                                        • 飞翔博客 3

                                          不错完美实现!
                                          最近垃圾评论 尤其多啊 每天 几十个! ╮(╯▽╰)╭

                                          • 飞翔博客 3

                                            刚试了一下 发现任然无法阻挡垃圾评论啊 怎么办法 啊????

                                            • lixjun 0

                                              好东西!使用后再不用隔两天就清理洋垃圾评论了!

                                              • LoveQishi 1

                                                用了这个以后@回复不成功,提示:万恶的发帖机。 我去掉以后才行,求解决方式

                                                • 智享互联 3

                                                  同一ip不是有很多人的吗?

                                                  • 电动摩托 2

                                                    现在发垃圾评论的都精了 我http://www.34qu.com用了这个方法后 竟然发现有垃圾评论也带中文了

                                                    • 呼博士 0

                                                      禁止掉同一ip就可以了~

                                                      • 易淘金股票池 2

                                                        Ality主题 0.32 版 无法用插件 myQaptcha 滑动条无法滑动 不知道怎么回事 特来报告

                                                        • 马赛克 2

                                                          有没有方法可以将某条评论置顶呢http://www.52masaike.com