博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Discuz x3论坛使用CDN后获取真实IP的解决方法
阅读量:6305 次
发布时间:2019-06-22

本文共 953 字,大约阅读时间需要 3 分钟。

hot3.png

公司论坛升级成Discuz x3之后获取的IP地址老是不正确导致一下莫名其妙的问题,解决方法如下:

打开\source\class\discuz\discuz_application.php文件,找到_get_client_ip(大约360行)方法。将代码改为:

private function _get_client_ip(){    $ip = $_SERVER['REMOTE_ADDR'];    if(isset($_SERVER['HTTP_CDN_SRC_IP']))    {        $ip = $_SERVER['HTTP_CDN_SRC_IP'];    }    elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP']))    {        $ip = $_SERVER['HTTP_CLIENT_IP'];    }    elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches))    {        foreach ($matches[0] AS $xip)        {            if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip))            {                $ip = $xip;                break;            }        }    }    return $ip;}
需要注意的是不同的CDN公司有可能会有差别,最简单的方法是新建一个PHPINFO文件在服务端看一下是否有对应的变量。

转载于:https://my.oschina.net/longjianghu/blog/167467

你可能感兴趣的文章
没有功能需求设计文档?对不起,拒绝开发!
查看>>
4星|《先发影响力》:影响与反影响相关的有趣的心理学研究综述
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
python之 列表常用方法
查看>>
vue-cli脚手架的搭建
查看>>
在网页中加入百度搜索框实例代码
查看>>
在Flex中动态设置icon属性
查看>>
采集音频和摄像头视频并实时H264编码及AAC编码
查看>>
3星|《三联生活周刊》2017年39期:英国皇家助产士学会于2017年5月悄悄修改了政策,不再鼓励孕妇自然分娩了...
查看>>
linux查看命令是由哪个软件包提供的
查看>>
高级Linux工程师常用软件清单
查看>>
堆排序算法
查看>>
folders.cgi占用系统大量资源
查看>>
路由器ospf动态路由配置
查看>>
zabbix监控安装与配置
查看>>
python 异常
查看>>
last_insert_id()获取mysql最后一条记录ID
查看>>
可执行程序找不到lib库地址的处理方法
查看>>
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>