php 取得真实ip兼容性写法.
程序员文章站
2022-05-22 10:36:39
...
function fun_get_ip(){ static $ip = null; if($ip) return $ip; // 不需要计算第二次. $ip=false; if($_SERVER['HTTP_VIA']){ if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; }else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip){ array_unshift($ips, $ip); $ip = false; } $ipss = count($ips); for ($i = 0; $i < $ipss; $i++){ if (!preg_match('/^(10|172\.16|192\.168)\./', $ips[$i])){ $ip = $ips[$i]; break; } } } }else{ $ip = $_SERVER['REMOTE_ADDR']; } # 更兼容的获取. if(!$ip) if(!$ip = getenv("REMOTE_ADDR")) if (!$ip = getenv("HTTP_CLIENT_IP")) if(!$ip = getenv("HTTP_X_FORWARDED_FOR")) $ip = false; return $ip; }