如何为 IPv6 使用 geoip 数据?
Posted
技术标签:
【中文标题】如何为 IPv6 使用 geoip 数据?【英文标题】:How to use geoip data for IPv6? 【发布时间】:2013-06-30 01:16:40 【问题描述】:这是我使用的代码
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$buffer= geoip_country_code_by_addr($gi, $ip);
geoip_close($gi);
return $buffer;
对于 IPv4。
我应该如何修改代码以同时支持 IPv6 和 IP4?
【问题讨论】:
你试过不修改吗? 不可能,因为ip6的.dat文件名不同。 如果您正在寻找 IPv6,IP2Location 是另一种选择。 【参考方案1】:为了使其正常工作,您需要从 MaxMind 下载 IPv6 数据库。您可以在以下位置找到:
http://dev.maxmind.com/geoip/legacy/geolite/
将 geoip_open 指向 IPv6 文件后,您应该能够查找 IPv6 地址。
例如:
$database = (strpos($ip, ":") === false) ? "GeoIP.dat" : "GeoLiteCityv6.dat";
$gi = geoip_open($database, GEOIP_STANDARD);
其余的和以前一样。
也就是说,您可能需要考虑重构,以免每次调用都打开和关闭数据库。
【讨论】:
是的,我想就是这样。但是 maxmind 有什么东西可以证实它确实是这样吗?你在哪里找到它?我想我从某个地方复制了整个代码。我忘记在哪里了。 数据库链接自 MaxMind 开发者网站。 重构怎么样?以上是关于如何为 IPv6 使用 geoip 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 maxmind geoip2 eclipse 添加依赖项
如何为inet设置sequelize postgres模型类型?