|
提问三步曲: 提问先看教程/FAQ索引(wdcp,wdcp_v3,一键包)及搜索,会让你更快解决问题
1 提供详细,如系统版本,wdcp版本,软件版本等及错误的详细信息,贴上论坛或截图发论坛
2 做过哪些操作或改动设置等
温馨提示:信息不详,很可能会没人理你!论坛有教程说明的,也可能没人理!因为,你懂的
[教程] DISCUZ站长如果使用CDN请注意啊该问题存在于任何CDN产品
本帖最后由 rar9 于 2012-3-12 13:00 编辑
使用CDN后Discuz!论坛提示”抱歉,你的IP地址不在被充许…”的解决方案
该问题导致的结果:
1.DZ论坛可能无法获得用户的真实IP,导致某些用户IP显示的是CDN节点的IP
2.论坛访问量过大的话,可能会导致用户访问时提示“抱歉,您的 IP 地址不在被允许,或您的账号被禁用,无法访问本站点”
解决方法(DZ X2为例):
打开DZ /source/class/class_core.php 文件
找到第341行,或者搜索“HTTP_CLIENT_IP”,找到如下代码:
if (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'],
if (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'],
方法1:
删除加红的部分
方法2:
临时注释加红部分,也就是比原来的代码多了二对注释符(/*和*/)即将上面的代码修改成:
/*
if (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'];
} else
*/
if(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'],
/*
if (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']; }else
*/
if(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'],
部分版本的Discuz!该文件中没有加红的第2部分,这种版本,您只需要删除或注释第一部分即可 |
|