龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

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

时间:2014-07-16 16:05来源:网络整理 作者:网络 点击:
分享到:
php 取得真实ip兼容性写法. [代码片段(34行)]
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;
}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接