PHP 从 API 获取位置


PHP GET Location from 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,而不是城市?

谢谢!

您的 IP 地址属于您的 ISP,并且他们已使用此 API 返回的地址注册了该地址。 API 无法 100% 准确地确定给定 IP 地址的实际地理位置。 例如,我目前在加利福尼亚州,但此服务 http://api.hostip.info/响应"弗吉尼亚州雷斯顿",因为我在Verizon上,这就是Verizon注册IP地址的地方。

这是一篇关于该主题的好文章:

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

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

地理位置数据库的准确性因数据库而异 你使用。对于IP到国家数据库,一些供应商声称提供98% 达到99%的准确度,尽管典型的Ip2Country数据库准确度更高 喜欢 95%。对于 IP 到区域(或城市),准确度范围为 50% 如果将邻近城市视为正确,则为 75%。考虑到 没有官方的IP到区域信息来源,准确率50+% 还不错。

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