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

知更鸟
知更鸟
知更鸟
1647
文章
6938
评论
2013年5月13日11:22:59311.9K4

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自带短代码添加视频 WordPress

利用WordPress自带短代码添加视频

利用WordPress自带的视频短代码可以方便地让你在任何位置添加视频,支持的文件类型是mp4,m4v,webm,ogv,wmv和flv。 基本的视频短代码 【video src="pepper.mp...
匿名

发表评论

匿名网友

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

评论: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用
                      可以阅读下面这篇关于静态化的文章
                      https://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关系
                                    先学会如何安装与卸载静态缓存插件…..
                                    外话,静态缓存插件菜鸟必备,人云亦云,注定杯具…

                              • 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主题,只要有国外发垃圾评论,网站错误日志里就会增加大量关于这个报错,我试试,谢谢。