首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用原生PHP获取IP的国家位置

使用原生PHP获取IP的国家位置
EN

Stack Overflow用户
提问于 2010-03-18 15:46:23
回答 5查看 30.2K关注 0票数 17

在你说这是一个复制品之前,请继续往下读,它不是。(据我所知)

我想从客户端获得php格式的县代码。

是的,我知道你可以使用外部站点或者像"geoip_record_by_name“这样的东西来做这件事,但我不想依赖于外部站点,而且我不能为php安装"pear”,因为我使用shard Dreamhost托管。

我想我可以这样做:

代码语言:javascript
复制
$output = shell_exec('whois '.$ip.' -H | grep country | awk \'{print $2}\'');
echo "<pre>$output</pre>";

但是dreamhost似乎有一个旧版本的whois (4.7.5),所以我在I分配上得到了这个错误:

代码语言:javascript
复制
Unknown AS number or IP network. Please upgrade this program.

因此,除非有人知道如何在dreamhost上获得更新版本的二进制文件,否则我会卡住。

或者,有没有其他方法可以让我从加载页面的客户端获得国家代码?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-23 10:15:59

Whois只是whois服务的一个客户端,所以从技术上讲,您仍然依赖于外部站点。对于失败的查询,您可以尝试回退到另一个站点进行查询,例如hostip.info,他们恰好有一个不错的API,而且看起来很友好:

代码语言:javascript
复制
http://api.hostip.info/country.php?ip=4.2.2.2

返回

代码语言:javascript
复制
US

祝好运,

--jed

http://www.hostip.info/use.html:@Mint这里是指向hostip.info上的API的链接:EDIT

票数 27
EN

Stack Overflow用户

发布于 2010-03-18 16:08:45

MaxMind提供了一个免费的PHP GeoIP country lookup class (还有一个免费的country+city查找)。

你想要的部分是在“纯PHP模块”下面提到的。这不需要安装任何东西,也不需要依赖它们,也不需要安装任何特殊的PHP模块。只需将GeoIP数据文件保存在某个位置,然后使用他们提供的类与其交互。

票数 18
EN

Stack Overflow用户

发布于 2010-03-18 16:02:00

你能不能只在你的主目录中安装一个whois的副本,并将完整路径传递到shell_exec中?这样你就不会被他们的升级计划所束缚了。

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

https://stackoverflow.com/questions/2468199

复制
相关文章

相似问题

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