自分のサイトがどの国・都市からアクセスされているかを知りたいと考えたことはないでしょうか?
アクセス元の国・都市を識別することで、適切なコンテンツや広告を表示することができるようになり、ユーザーの利便性を高めることができます。
IPアドレスからアクセス元の国・都市を判別する方法をご紹介します。
IPインテリジェンスプロバイダーのMaxMindが提供しているフリーソフト「GeoIP」というPHPモジュールを使うことでIPアドレスから国や都市、タイムゾーンを取得することができます。
>>GithubからGeoIPをダウンロードする
以下の4つのファイルをダウンロードします
geoip.inc
geoipcity.inc
geoipregionvars.php
timezone.php
MaxMindのサイトからIPアドレスのデータベースファイルをダウンロードします。今回、GeoLite CityのCSV / zip版をダウンロードしました。全世界分のデータベースなので容量は20.5MBありました。
「piece of note」が作ったサンプルコードをご紹介します。
ダウンロードしたGeoIPのPHPモジュールとdatファイルを同じディレクトリにまとめて配置して試して見ましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php include_once("geoipcity.inc"); include_once("geoipregionvars.php"); include_once("timezone.php"); //datファイルを配置したディレクトリ $geo_dir = ""; //IPアドレス取得 $ipaddress = $_SERVER["REMOTE_ADDR"]; $gip = geoip_open($geo_dir . "GeoLiteCity.dat", GEOIP_STANDARD); $dat = GeoIP_record_by_addr( $gip, $ipaddress ); //タイムゾーン取得 $time_zone = get_time_zone( $dat->country_code, $dat->region ); //取得したタイムゾーンを設定 date_default_timezone_set($timezone); echo "IPアドレス:" . $ipaddress . "<br />"; echo "タイムゾーン:" . $timezone . "<br />"; echo "現地時刻:" . date("Y/m/d H:i") . "<br />"; ?> |
サンプルコードを実装したページで自分のIPアドレスとタイムゾーンを確認することができます。
いかがでしたでしょうか?
無料でモジュールとデータベースを提供しているMaxMind社のおかげで楽に実現できますね。