※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。
■ アクセス情報の表示
今回の「アクセス情報の表示」は、この後で説明する「アクセスログの作成」に必要な情報の取得方法を解説します。
では、アクセスログに記録する情報ってどんなものがあるのでしょうか?
いろんな情報がありますが、最低限必要なものとしては、自分のサイトに、いつ、どこから、どのぐらいの人が訪問して、どんなページを見ているのかを調べられるような情報と考えられます。
また、サイトにとって好ましくない訪問者(いたずら、誹謗・中傷、荒らし)などを特定したり、自分のサイトがどういったところにリンクされてるのかを調べることもできます。
とはいえ、なんでもかんでも調べられるというものではありません。
使用する言語や相手の接続形態、自分のサーバーの環境などに大きく左右されます。
一般的に次のような情報を取得させます。
1.日付・時刻..サーバーの持つ現在の日時を使用します。
2.表示されたページ ..自サイトの訪問者が見ているページ
3.リファラー(referer)..どのサイトから訪問してきたか、俗に言うリンク元(逆リンクとも言う)。
4.訪問者のエージェント..アクセスをしたときのOS、ブラウザなど。
5.訪問者のIPアドレス..プロバイダから与えられる、世界に1つしかない接続番号のようなもの。
これ以外の情報も記録できますが、もっと知識が増えてからでいいでしょう。
- 【 解 説 】
-
まず、PHPで日付・時刻を取得するには次のように記述します。
print date("Y/m/d H:i:s", date("U"));それ以外の情報はほとんどPHPが持つ環境変数で取得できます。
現在表示しているページは「$_SERVER["REQUEST_URI"]」で、リファラーは「$_SERVER["HTTP_REFERER"]」、訪問者のエージェントは「$_SERVER["HTTP_USER_AGENT"]」、訪問者のIPアドレスは「$_SERVER["REMOTE_ADDR"]」で取得できます。
これらをタイトルを付けて表示するなら次のように記述できます。print "表示ページ:".$_SERVER["REQUEST_URI"]."<br>\n"; print "リンク元:".$_SERVER["HTTP_REFERER"]."<br>\n"; print "エージェント:".$_SERVER["HTTP_USER_AGENT"]."<br>\n"; print "IPアドレス:".$_SERVER["REMOTE_ADDR"]."<br>\n";
そしてこの前後にヒアドキュメントを使いHTML部を出力します。
※ヒアドキュメントについては、「PHPの予備知識」−「ヒアドキュメントについて」を参照してください。
では、上記の内容を使用して「アクセス情報の表示」を作成してみます。
表示文字列の最後にある「<br>\n」はそれぞれのHTMLの改行とテキストファイルの改行です。
- 【記述サンプル】
- <?php print <<< END_DOC <HTML> <HEAD><title>アクセス情報の表示</title> </HEAD><BODY> END_DOC; print "現在の日時:".date("Y/m/d H:i:s", date("U"))."<br>\n"; print "表示ページ:".$_SERVER["REQUEST_URI"]."<br>\n"; print "リンク元:".$_SERVER["HTTP_REFERER"]."<br>\n"; print "エージェント:".$_SERVER["HTTP_USER_AGENT"]."<br>\n"; print "IPアドレス:".$_SERVER["REMOTE_ADDR"]."<br>\n"; print <<< END_DOC </BODY> </HTML> END_DOC; ?>