来自API的PHP GET位置

时间:2015-01-03 23:19:23

标签: php api

我遇到了hostip.info API的一些问题。

这是我的PHP代码:

$ip = $_SERVER['REMOTE_ADDR'];
 echo $ip;
   $response = file('http://api.hostip.info/get_html.php?ip='.$ip);
 foreach ($response as $line) {
    $line = trim($line);
    if (!empty($line)) {
    $parts = explode(': ', $line);
    $array[$parts[0]] = $parts[1];
}
}

它返回了我正确的IP地址,但是当我尝试返回$array['City']时,它说我处于不同的状态。我没有使用代理。为什么它给了我正确的IP,而不是城市?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的IP地址属于您的ISP,并且已经使用此api返回的地址进行了注册。 api无法以100%的准确度确定给定IP地址的实际地理位置。例如,我目前在加利福尼亚州,但此服务http://api.hostip.info/以" Reston,VA"因为我在Verizon以及Verizon注册ip地址的地方。

Here is a good article about the subject:

有更准确的服务,例如https://www.maxmind.com/en/geoip2-precision-insights,但我不知道是否有任何免费服务。

编辑:刚刚发现此网站显示了各种类似服务的结果的良好比较:http://www.iplocation.net/
并从该网站,这个解释:

  

地理位置数据库的准确性因数据库而异   你用。对于IP到国家的数据库,一些供应商声称提供98%   虽然典型的Ip2Country数据库精度更高,但精度达到99%   像95%。对于IP到区域(或城市),认证范围从50%到任何   如果邻近城市被视为正确,则达到75%。考虑到这一点   没有官方的IP到地区信息来源,准确率为50 +%   非常好。

我希望这能回答你的问题。