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

WordPress312K阅读模式

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
我的微信
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
知更鸟
评论  31  访客  25  作者  6
    • Win7en乐园
      Win7en乐园 8

      鸟哥有心了!

      • Teddysun
        Teddysun 2

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

        • Teddysun
          Teddysun 2

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

          • Teddysun
            Teddysun 2

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

              • 知更鸟
                知更鸟

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

                  • Teddysun
                    Teddysun 2

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

                • 电视包装网
                  电视包装网 3

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

                    • 知更鸟
                      知更鸟

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

                        • Teddysun
                          Teddysun 2

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

                          • 电视包装网
                            电视包装网 3

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

                            • 电视包装网
                              电视包装网 3

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

                              • 电视包装网
                                电视包装网 3

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

                                  • 知更鸟
                                    知更鸟

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

                                      • LoveQishi
                                        LoveQishi 1

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

                                • sensual massage london
                                  sensual massage london 1

                                  感谢鸟哥分享~

                                  • 翩翩飞舞
                                    翩翩飞舞 1

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

                                    • 飞翔博客
                                      飞翔博客 3

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

                                      • 飞翔博客
                                        飞翔博客 3

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

                                        • lixjun
                                          lixjun 0

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

                                          • LoveQishi
                                            LoveQishi 1

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

                                            • 智享互联
                                              智享互联 3

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

                                              • 电动摩托
                                                电动摩托 2

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

                                                • 呼博士
                                                  呼博士 0

                                                  禁止掉同一ip就可以了~

                                                  • 易淘金股票池
                                                    易淘金股票池 2

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

                                                    • 马赛克
                                                      马赛克 2

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

                                                      • 简单生活
                                                        简单生活 4

                                                        现在用的err 报错怎么搞:Uncaught Error: Call to undefined function err()

                                                        • 简单生活
                                                          简单生活 4

                                                          现在用的err()函数会报错,调用未定义函数。 :cool:

                                                            • 知更鸟
                                                              知更鸟

                                                              @ 简单生活 文章中用err是专指在我设计的主题中使用
                                                              其它主题在函数模板中添加下面代码,重新定义err
                                                              function err($ErrMsg) {
                                                              header(‘HTTP/1.1 405 Method Not Allowed’);
                                                              echo $ErrMsg;
                                                              exit;
                                                              }

                                                                • 简单生活
                                                                  简单生活 4

                                                                  @ 知更鸟 用的就是begin主题,只要有国外发垃圾评论,网站错误日志里就会增加大量关于这个报错,我试试,谢谢。

                                                            匿名

                                                            发表评论

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

                                                            拖动滑块以完成验证