这是我使用的代码
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$buffer= geoip_country_code_by_addr($gi, $ip);
geoip_close($gi);
return $buffer;
对于 IPv4。
我应该如何修改代码以同时支持 IPv6 和 IP4?
为了使它工作,您需要从 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);
其余的和以前一样。
也就是说,您可能需要考虑重构,这样您就不会在每次调用时打开和关闭数据库。