何気にMonacoinとの通信実験プログラムにPEARのNet_GeoIPを使ってみたのでメモ。
IPから国名を導き出すライブラリ。
なお、GeoIPはPECLにもある。PECLの方が若干動作早い(と思う)し高機能だがここはお手軽なPEARを使ってみる。一応普通の共有サーバーを使ってる人にも対応する書き方で。
インストール
PEARのサイトからパッケージをダウンロードして解凍するか、pearコマンドなら
# pear install Net_GeoIP
でいける。が、GeoIPデータがないと動かないので次にMaxMind社のページから最新のGeoIPデータもダウンロード、解凍して適当なところに置いておく。
OSにインストールされていればそれ*1も利用できるが一部のディストリビューションのパッケージで配布されているものはデータが古い場合もあるのでここでは使わない。
なお、IPv6版やGeoLiteCity、GeoLiteASNはここでは不要*2。
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz $ gunzip GeoIP.dat.gz
使ってみる
IPから国名を導き出してみる。PEAR版の場合はIP以外の文字列を渡しても動作しないので注意。
<?php require_once("Net/GeoIP.php"); $geoip = Net_GeoIP::getInstance("/path/to/GeoIP.dat",Net_GeoIP::MEMORY_CACHE); $ip = "93.184.216.119"; //example.comのIP echo "IP: $ip\n"; echo "CountryName: " . $geoip->lookupCountryName($ip) . "\n"; echo "CountryCode: " . $geoip->lookupCountryCode($ip) . "\n"; ?>
IP: 93.184.216.119 CountryName: United States CountryCode: US
簡単でしょ?
蛇足
- 毎日ブログ投稿がいつまで続くやら。
- どこにでもあるよーな記事です。本当にありがとうございました。