10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPのGeoIPで国判定

Last updated at Posted at 2015-03-27

GeoIP2

現在はGeoIPは廃止されてGeoIP2に移行しています。
https://packagist.org/packages/geoip2/geoip2

EXampleの「GeoIP2-City.mmdb」はこちらからダウンロード可能です。
https://dev.maxmind.com/geoip/geoip2/geolite2/

GeoIP ※以下、現在は利用できない内容です。

PHPでの国判定のメモ。

GeoIPについては、Googleで「GeoIPとは」と検索すればGoogle先生が親切に答えてくれます。
また、PHPのGeoIPの詳細についてはマニュアルを参照してください。

今回は環境はPHP5.6系とComposerを使用し、無償版を対象としています。
使用するComposerのパッケージはこちら

まず、下準備としてMaxMin社のサイトから「GeoIP.dat」をダウンロードします。
ダウンロード対象は「GeoLite Country」です。

次に、Composerでパッケージをインストールします。

composer.json
{
    "require": {
        "geoip/geoip": "dev-master"
    }
}

残りは簡単です。
これだけのコードで二文字の国名コードを取得できます。
日本だったら「JP」、アメリカだったら「US」、イギリスだったら「GB」といった具合です。

sample.php
$gi = geoip_open('GeoIP_dat_path/GeoIP.dat', GEOIP_STANDARD);
$country = geoip_country_code_by_addr($gi, $_SERVER['HTTP_X_FORWARDED_FOR']);
geoip_close($gi);

他の関数等はsrc/geoip.incを見れば取得内容や関数等は確認できます。
ただし、IPがヒットしなければ国名コードが取得できない事があるので注意してください。

GeoIPデータベースの更新頻度やツール、有償版のコマンドはここに書いてあるので参考にしてみてください。
参考サイト:http://flatray.com/geoip/

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?