http://blog.csdn.net/liruxing1715/article/details/28238483
有这样的需求,需要根据用户的IP地址,定位用户所在的城市。
本文记录性文章,无逻辑性。有这样需求的朋友,可以直接拷贝使用。直接上代码,不需赘述。
-
-
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('' . $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');
-
var_dump($ipInfos);
结果截图:
使用了新浪的开放API,执行速度还是非常赞的。
本文来自于 CSDN,转载请标注出处!http://blog.csdn.net/liruxing1715/article/details/28238483
阅读(2399) | 评论(0) | 转发(0) |