理想情况下,我正在尝试组合一个可以从任何web浏览器查询的PHP脚本,它会返回访问PHP脚本的IP地址的国家/地区。
这是可能的,还是有更好的解决方案?
发布于 2013-07-12 14:00:58
有各种web API可以为您完成此任务。下面是一个使用我的服务http://ipinfo.io的示例
$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
echo $details->country; // -> "US"
Web是一个很好的、快速且简单的解决方案,但是如果您需要进行大量查找,那么在您自己的计算机上拥有一个IP ->国家/地区数据库是一个更好的解决方案。MaxMind提供了一个free database,您可以将其与各种PHP库一起使用,包括GeoIP。
发布于 2012-05-21 15:55:20
您可以从MaxMind下载ip表:
http://www.maxmind.com/app/geolite
将CSV导入您的数据库(确保为ip_long_from +ip_long_to创建索引)。然后,您可以简单地执行以下操作:
$iplong = ip2long($_SERVER['REMOTE_ADDR']);
// should use mysqli with prepared statements etc, but just an example
mysql_query("
SELECT country
FROM ip_table
WHERE $iplong BETWEEN ip_long_from AND ip_long_to
LIMIT 1
");
发布于 2016-10-02 16:33:17
您可以使用此location API从IP地址获取国家/地区
代码
echo file_get_contents('https://ipapi.co/8.8.8.8/country/');
响应
US
这是一个fiddle。查询特定字段时,返回为text
,例如此处为country
。无需解码,只需将其插入到代码中即可。
备注:如果您需要所有字段,例如https://ipapi.co/8.8.8.8/json/
,则响应为JSON
。
https://stackoverflow.com/questions/3650006
复制相似问题