【发布时间】:2013-11-26 09:04:12
【问题描述】:
在这里,当他单击我页面上的登录按钮时,我试图获取用户的 IP。我想最终从IP中得到city的名字。
function get_client_ip() {
$ipaddress = '';
if ($_SERVER['HTTP_CLIENT_IP'])
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if($_SERVER['HTTP_X_FORWARDED'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if($_SERVER['HTTP_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if($_SERVER['HTTP_FORWARDED'])
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if($_SERVER['REMOTE_ADDR'])
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
除了上述之外,还有什么更好更快的方法吗?
然后得到城市,
$ip = get_client_ip();
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $details->city;
【问题讨论】:
-
您可以下载与城市相关的ip范围并将它们存储在db中,这样您就可以根据本地db中的范围测试ip,执行起来会更快,但我不认为努力值得