ccdr

通过IP地址定位地理位置

<?php  
header(\'Content-Type:text/html;Charset=utf-8\');  
function GetIp(){  
    $realip = \'\';  
    $unknown = \'unknown\';  
    if (isset($_SERVER)){  
        if(isset($_SERVER[\'HTTP_X_FORWARDED_FOR\']) && !empty($_SERVER[\'HTTP_X_FORWARDED_FOR\']) && strcasecmp($_SERVER[\'HTTP_X_FORWARDED_FOR\'], $unknown)){  
            $arr = explode(\',\', $_SERVER[\'HTTP_X_FORWARDED_FOR\']);  
            foreach($arr as $ip){  
                $ip = trim($ip);  
                if ($ip != \'unknown\'){  
                    $realip = $ip;  
                    break;  
                }  
            }  
        }else if(isset($_SERVER[\'HTTP_CLIENT_IP\']) && !empty($_SERVER[\'HTTP_CLIENT_IP\']) && strcasecmp($_SERVER[\'HTTP_CLIENT_IP\'], $unknown)){  
            $realip = $_SERVER[\'HTTP_CLIENT_IP\'];  
        }else if(isset($_SERVER[\'REMOTE_ADDR\']) && !empty($_SERVER[\'REMOTE_ADDR\']) && strcasecmp($_SERVER[\'REMOTE_ADDR\'], $unknown)){  
            $realip = $_SERVER[\'REMOTE_ADDR\'];  
        }else{  
            $realip = $unknown;  
        }  
    }else{  
        if(getenv(\'HTTP_X_FORWARDED_FOR\') && strcasecmp(getenv(\'HTTP_X_FORWARDED_FOR\'), $unknown)){  
            $realip = getenv("HTTP_X_FORWARDED_FOR");  
        }else if(getenv(\'HTTP_CLIENT_IP\') && strcasecmp(getenv(\'HTTP_CLIENT_IP\'), $unknown)){  
            $realip = getenv("HTTP_CLIENT_IP");  
        }else if(getenv(\'REMOTE_ADDR\') && strcasecmp(getenv(\'REMOTE_ADDR\'), $unknown)){  
            $realip = getenv("REMOTE_ADDR");  
        }else{  
            $realip = $unknown;  
        }  
    }  
    $realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;  
    return $realip;  
}  
  
function GetIpLookup($ip = \'\'){  
    if(empty($ip)){  
        $ip = GetIp();  
    }  
    $res = @file_get_contents(\'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=\' . $ip);  
    if(empty($res)){ return false; }  
    $jsonMatches = array();  
    preg_match(\'#\{.+?\}#\', $res, $jsonMatches);  
    if(!isset($jsonMatches[0])){ return false; }  
    $json = json_decode($jsonMatches[0], true);  
    if(isset($json[\'ret\']) && $json[\'ret\'] == 1){  
        $json[\'ip\'] = $ip;  
        unset($json[\'ret\']);  
    }else{  
        return false;  
    }  
    return $json;  
}  
  
  
$ipInfos = GetIpLookup(\'123.125.114.144\'); //baidu.com IP地址  
var_dump($ipInfos);  

 

分类:

技术点:

相关文章: