Studio Dream Living

ニュース
ニュース
ニュース

ログアナライザーの作成


 ログアナライザーを作成するには、PHPの環境変数から、

 $log_date = date(“Y-m-d”); // アクセス日
 $log_time = date(“H:i:s”); // アクセス時間
 $log_ip = $_SERVER[‘REMOTE_ADDR’]; //訪問者のipアドレス
 $log_url = $_SERVER[‘HTTP_USER_AGENT’]; //訪問者のユーザーエージェント(訪問者のurlは取得できないので、かわりにユーザーエージェント情報を取得)
 $log_host = $_SERVER[‘REMOTE_HOST’];  //訪問者のホスト
 $log_referrer = $_SERVER[‘HTTP_REFERER’]; //遷移元
 $log_language = $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]; //訪問者の言語名

などの情報を取得し、取得したデータ毎に、日別、時間帯別などの条件で整理することになります。

 ただ、訪問者のサーバーの設定ではホスト名を取得できない場合がありますので、$hostname = gethostbyaddr($_SERVER[‘REMOTE_ADDR’]) のようなメソッドで、ホスト名を逆引きする必要性も出てきます。

 また、$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]で国名を取得できるということですが、実際に取得できるのは ja,en-US;q=0.7,en;q=0.3 のような文字列なので、これを国名に変換する手順が必要になってきます。

 PHPで訪問者の国名を取得するには、GeoIP2-phpといったモジュールをインストールすることが推奨されていますが、工夫次第で何とかなりそうなので、それにかわる方法を考えます。

 $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]で取得できるja、enなどの略語は定型になっているようで、たとえばdeならドイツ語、frならフランス語を意味し、ja,en-US;q=0.7,en;q=0.3 のなかから最初の2文字を切り出し、それに対応する言語名を取得できれば、ある程度正確に、訪問者の国名が取得できることになります。

 最初の2文字の切り出しは substr($log_language, 0,2) で行い、es-AR(スペイン語/ アルゼンチン)のように5文字のものは、ハイフンの有無を判定し、ハイフンがあれば5文字切り出します。

 これをあらかじめ作成しておいた

is アイスランド語
pl ポーランド語
fr-CA フランス語/ カナダ

のようなデータベースと照合し、返ってきた言語名を他のアクセス情報と一緒に記録すると、訪問者の国名が表示されるログアナライザーが出来上がることになります。

 

完成したログアナライザー(訪問者のipアドレス、訪問者のユーザーエージェント、訪問者のホスト、訪問者の遷移元、訪問者の国名(言語名)がわかります)

 

訪問者の国名を表示できるようにするために作られた、言語名(略称)と言語名(正式名)が対になった言語情報を記録したデータベース

 

ページトップへ

Translate »