2018年1月27日土曜日

[PHP] IPアドレスから国を判定する(国コード)を取得する

【試した環境】
Google Cloud Platform(GCP)[VMインスタンス]上で実行
OS : Linux(Debian 9.2)
PHP(7.0.27)

今回はPHPでgeoipを利用して、[IPアドレス] や [ホスト名] から国を判定する(国コードなどの取得する)方法です。


データベースの更新

まず、geoipを取得する必要がある
データベースを取得する必要があります。
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ gunzip GeoLiteCity.dat.gz
$ sudo mkdir -v /usr/share/GeoIP
$ sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

データベースは定期的に更新する必要があります。(基本上記の繰り返しでOK)
GeoIPの利用方法 - GeoIPデータベースの更新

geoipをインストール

php用のgeoipをインストールします。
$ sudo apt-get install php-geoip
(if PHP5) $ sudo apt-get install php5-geoip

これでphpで利用できるようになりました。

試してみる

例えば以下で2文字の国コードが帰ってきます。
$countryCode = geoip_country_code_by_name($_SERVER["REMOTE_ADDR"]);

国コードは以下を参照
ISO 3166 Country Codes
その他含め関数群は以下を参照
PHP : GeoIP 関数 - Manual

【参考】

PHP : GeoIP 関数 - Manual
GeoIPの利用方法 - GeoIPデータベースの更新

0 件のコメント:

コメントを投稿