1

これは私が使用したコードです

$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$buffer= geoip_country_code_by_addr($gi, $ip); 
geoip_close($gi);
return $buffer;

IPv4 用。

IPv6 と IP4 の両方をサポートするには、コードをどのように変更すればよいですか?

4

1 に答える 1

4

これを機能させるには、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);

残りは以前と同じになります。

とはいえ、呼び出しごとにデータベースを開いたり閉じたりしないように、リファクタリングを検討することをお勧めします。

于 2013-06-30T01:37:22.853 に答える