欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php 取得真实ip兼容性写法.

程序员文章站 2022-05-13 08:26:03
...
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;
}