-- 作者:zhirui
-- 发布时间:2015-02-27 09:44:54
-- 使用CDN后,获取真实IP 办法
Supesite使用CDN后获取真实IP 办法 include/main.inc.php文件,这部分 if(getenv(\'HTTP_CLIENT_IP\') && strcasecmp(getenv(\'HTTP_CLIENT_IP\'), \'unknown\')) { $_SGLOBAL[\'onlineip\'] = getenv(\'HTTP_CLIENT_IP\'); } elseif(getenv(\'HTTP_X_FORWARDED_FOR\') && strcasecmp(getenv(\'HTTP_X_FORWARDED_FOR\'), \'unknown\')) { $_SGLOBAL[\'onlineip\'] = getenv(\'HTTP_X_FORWARDED_FOR\'); } elseif(getenv(\'REMOTE_ADDR\') && strcasecmp(getenv(\'REMOTE_ADDR\'), \'unknown\')) { $_SGLOBAL[\'onlineip\'] = getenv(\'REMOTE_ADDR\'); } elseif(isset($_SERVER[\'REMOTE_ADDR\']) && $_SERVER[\'REMOTE_ADDR\'] && strcasecmp($_SERVER[\'REMOTE_ADDR\'], \'unknown\')) { $_SGLOBAL[\'onlineip\'] = $_SERVER[\'REMOTE_ADDR\']; } 替换成 function get_real_ip() { $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER[\'HTTP_X_FORWARDED_FOR\'])) { $ips = explode (", ", $_SERVER[\'HTTP_X_FORWARDED_FOR\']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10|172\\.16|192\\.168)\\.", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER[\'REMOTE_ADDR\']); } $_SGLOBAL[\'onlineip\'] = get_real_ip(); Discuz!使用CDN后获取真实IP办法 nclude/common.inc.php 找到如下代码: if(getenv(\'HTTP_CLIENT_IP\') && strcasecmp(getenv(\'HTTP_CLIENT_IP\'), \'unknown\')) { $onlineip = getenv(\'HTTP_CLIENT_IP\'); } elseif(getenv(\'HTTP_X_FORWARDED_FOR\') && strcasecmp(getenv(\'HTTP_X_FORWARDED_FOR\'), \'unknown\')) { $onlineip = getenv(\'HTTP_X_FORWARDED_FOR\'); } elseif(getenv(\'REMOTE_ADDR\') && strcasecmp(getenv(\'REMOTE_ADDR\'), \'unknown\')) { $onlineip = getenv(\'REMOTE_ADDR\'); } elseif(isset($_SERVER[\'REMOTE_ADDR\']) && $_SERVER[\'REMOTE_ADDR\'] && strcasecmp($_SERVER[\'REMOTE_ADDR\'], \'unknown\')) { $onlineip = $_SERVER[\'REMOTE_ADDR\']; } 替换为: function get_real_ip() { $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER[\'HTTP_X_FORWARDED_FOR\'])) { $ips = explode (", ", $_SERVER[\'HTTP_X_FORWARDED_FOR\']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10|172\\.16|192\\.168)\\.", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER[\'REMOTE_ADDR\']); } $onlineip = get_real_ip();
|