使用 PHP 获取 IP 地址的国家/地区

理想情况下,我正在尝试将一个PHP脚本放在一起,我可以从任何Web浏览器查询该脚本,并返回访问PHP脚本的IP地址的国家/地区。

这是可能的还是有更好的解决方案?


答案 1

您可以使用一些免费、简单的 API,例如:

哪一个看起来最值得信赖取决于你:)

否则,有些脚本基于服务器上的本地数据库。但是,数据库数据需要定期更新。看看这个:

呵呵!

编辑:当然,根据您的项目,您可能需要查看HTML5位置功能。您还不能在Internet Explorer上使用它们(IE9将支持它,还有很长的路要走),但是如果您的受众主要在移动设备上使用或使用Safari / Firefox,那么绝对值得一看!

获得坐标后,可以将其地理编码为国家/地区代码。同样有这样的API:

更新,2013年4月 今天,我建议使用Geocoder,这是一个PHP库,可以非常容易地对IP地址和邮政地址数据进行地理编码。

更新,2016
年 9 月 由于 Google 的隐私策略发生了变化,如果您的服务器没有 HTPPS 证书或用户不允许您检查他的位置,则无法使用 HTML5 地理位置 API。所以现在你可以使用用户的IP,签入PHP或获取HTTPS证书。


答案 2

有各种 Web API 可以为您执行此操作。下面是使用我的服务的示例,http://ipinfo.io

$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $details->country; // -> "US"

Web API是一个很好的快速简便的解决方案,但是如果您需要进行大量查找,那么在自己的计算机上拥有IP->国家/地区数据库是一个更好的解决方案。MaxMind提供了一个免费的数据库,您可以将其与各种PHP库一起使用,包括GeoIP


推荐