首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用PHP获取IP地址的国家/地区

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

Stack Overflow用户
提问于 2010-09-06 16:29:44
回答 12查看 215.7K关注 0票数 92

理想情况下,我正在尝试组合一个可以从任何web浏览器查询的PHP脚本,它会返回访问PHP脚本的IP地址的国家/地区。

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

EN

回答 12

Stack Overflow用户

发布于 2013-07-12 14:00:58

有各种web API可以为您完成此任务。下面是一个使用我的服务http://ipinfo.io的示例

代码语言:javascript
复制
$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

票数 56
EN

Stack Overflow用户

发布于 2012-05-21 15:55:20

您可以从MaxMind下载ip表:

http://www.maxmind.com/app/geolite

将CSV导入您的数据库(确保为ip_long_from +ip_long_to创建索引)。然后,您可以简单地执行以下操作:

代码语言:javascript
复制
$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
");
票数 26
EN

Stack Overflow用户

发布于 2016-10-02 16:33:17

您可以使用此location API从IP地址获取国家/地区

代码

代码语言:javascript
复制
    echo file_get_contents('https://ipapi.co/8.8.8.8/country/');

响应

代码语言:javascript
复制
   US 

这是一个fiddle。查询特定字段时,返回为text,例如此处为country。无需解码,只需将其插入到代码中即可。

备注:如果您需要所有字段,例如https://ipapi.co/8.8.8.8/json/,则响应为JSON

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3650006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档