PHP 从 IP 地址获取位置 MaxMind GEOIP

Posted

技术标签:

【中文标题】PHP 从 IP 地址获取位置 MaxMind GEOIP【英文标题】:PHP Getting the location from an IP address MaxMind GEOIP 【发布时间】:2015-11-05 16:52:19 【问题描述】:

我使用php MaxMind GeoIP 来获取用户的位置。 我确实下载了两个文件进行测试:GeoLiteCity.datGeoIPCity.dat

这是我的php 代码:

$ip = "189.90.207.67";
$gi = geoip_open("data/GeoLiteCity.dat", GEOIP_STANDARD);
$record = geoip_record_by_addr($gi, $ip);
print "Ip: ".$ip."<br>";
print "Country: ".$record->country_name . "<br>";
print "Region: ".$record->region. "<br>";
print "city: ".$record->city . "<br>";
print "latitude: ".$record->latitude . "<br>";
print "longitude: ".$record->longitude . "<br>";
geoip_close($gi);

结果:

IP:189.90.207.67 国家:巴西地区:城市:纬度:-23.5477 经度:-46.6358

返回的坐标与 MaxMind 不同: https://www.maxmind.com/en/geoip-demo ip: 189.90.207.67

我从 ISP 获得的代码中的坐标,与 GeoIPCity.dat 所有字段的结果都是空的。

为什么网站和我的代码的结果不同?

【问题讨论】:

您链接到的演示是针对付费数据库的。这可以解释差异。 谢谢。你知道有这种精度的免费服务吗? 【参考方案1】:

在线演示使用的是商业数据库。您的代码正在查询 GeoLite 数据库。

您不应该期望来自两个不同数据库的相同结果。

【讨论】:

谢谢。你知道有这种精度的免费服务吗? 试用IP2Location LITE lite.ip2location.com LITE 数据库中有城市信息。

以上是关于PHP 从 IP 地址获取位置 MaxMind GEOIP的主要内容,如果未能解决你的问题,请参考以下文章

MaxMind 从 IP 地址获取 Lat/Lng,InvalidDatabaseException 错误

用于从 IP 地址获取地理编码的 Java 库

从IP地址获取用户纬度和经度的最简单方法是啥[关闭]

无法从 maxmind 返回对象中获取键值

php maxmind geoip 异常ip

从用户 IP 地址获取位置