REFERER: 参照元。
自分のページがどこからリンクされているのか、というのは案外気になるもの。 検索エンジンにどれだけ収集されているのか、と言うことも、 ばかばかしい見栄だな、だなとは思うけど、やっぱり気になってしまう。 で、自分用のアクセス解析プログラムを作ったときに、 HTTP_REFERER(参照元/リンク元)も取得しファイリングするように設計したのだけど、 精度が今ひとつ。 それも当然のことで、PHPやPerlを通して『環境変数』という形でサーバに渡されるHTTP_REFERERは、 Norton Internet Security などのセキュリティ対策ソフトウェアが起動している環境では、 『プライバシーの保護』という意味で送信が制限される。 おおさっぱに言ってしまえば、そういう環境では、HTTP_REFERERを取得できない。 それはほとんど正解なのだけど… 今日、巡回ソフトウェア対策でとあるサイト(☆☆白いはインターネット☆☆)を読んでいたところ、 HTTP_REFERはサーバに送られていないだけで、ブラウザには情報として存在してる、 だから、JavaScriptを使えば取得できる…という記事を発見。 (→ セキュリティーソフトと参照元(リファラ)隠し) ガーン!HTTP_REFERERは保護されてると思いこんでいた、というのと、 多くの解析プログラムはコレを利用してる、という2つの点でショックを受けた。 早速、プログラムの設計し直し。 ヒントになったのは、このページ。 PHP+JavaScriptを利用したアクセスログ取得方法 – Memo & Nucleus このページによると、JavaScriptで取得した後、 <script>タグや、<img>タグなどを使ってphpを呼び出してやれば、 値をプログラムに渡せるらしい。 実際の記述に関しては、PHPでのアクセス解析プログラムをリリースされている こちらを参考にさせていただいた。 LovPop.net – Apricot アクセス解析プログラム そうしてできた最低限の解析タグがこちら。
<script language=”JavaScript”> ref = document.referrer; document.write(‘<img src=”<?=$URL?>’ + ‘?mode=log&P=<?=$P?>&ref=’ + escape(document.referrer) + ‘”>’); </script> <noscript><img src=”<?=$URL?>?mode=log”></noscript>phpファイル内に記述してるので、そのような解析タグになってます。 これで、環境変数をGETで取得してやれば、問題ないというわけ… 正当な手法といえるのか、それとも小技と言うべきか… 『アクセス解析界』では常識っぽい匂いもするけど。 JavaScriptみたいなクライアント系スクリプトは、動作がブラウザ任せなんで 好きじゃないし、極力避けてるんだけど、コレばっかりは仕方ないかもな。