PHP 根据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('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);

原文地址:https://www.cnblogs.com/qiuqiuqiu/p/6525342.html