PHPでユーザー・アクセス情報を表示する

(1/1)
HTTP通信においては、ブラウザ(クライアント)がホストに対して様々な情報を送信していることはご存じだろうか。
個人を特定できるような情報が送られるというのは都市伝説で、実際には、アクセスしているクライアントの IP アドレスやブラウザの種類が送信されるだけである。それでも、アクセス解析のための情報として重宝する。
そこで今回は、PHP を使って、ブラウザがどのような情報を送っているのか表示するプログラムをつくる。
HTTP変数
まずは、ブラウザ(クライアント)が HTTP サーバに送信するHTTP 変数を整理しておこう。
REMOTE ADDRESS現在のページを見ているユーザーの IP アドレス。
REMOTE HOST現在のページを見ているユーザーのホスト名。
ISP特有のホスト名が付いていることが多く、ユーザーがどの地域からアクセスしているのか、だいたいの目安になる。
REMOTE PORTユーザーが利用しているポート番号。
HTTP USER AGENT現在のリクエストにおいて User_Agent:ヘッダーが定義されている場合にはその内容。
これは、現在のページを見るために使用されているブラウザの種類を示す文字列である。
HTTP REFERERブラウザから現在のページを参照する際のページアドレス。
この変数は、ユーザーのブラウザにより設定される。全てのブラウザが この変数を設定するわけではない。
HTTP ACCEPT LANGUAGE現在のリクエストにおける Accept-Language:ヘッダーの内容。
ただし、該当するヘッダーがある場合のみ定義される。
HTTP CONNECTION現在のリクエストにおける Connection:ヘッダーの内容。
ただし、該当するヘッダーがある場合のみ定義される。
サンプル・プログラム

0001: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
0002:  "http://www.w3.org/TR/html4/loose.dtd">
0003: <html lang="ja">
0004: <head>
0005: <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
0006: <title>現在アクセスししているユーザー情報を表示する</title>
0007: </head>
0008: <body>
0009: <table border="1" cellspacing="3">
0010: <caption>アクセス情報</caption>
0011: <tr>
0012: <td>REMOTE ADDRESS</td>
0013: <td><?=$_SERVER["REMOTE_ADDR"] ?></td>
0014: </tr>
0015: <tr>
0016: <td>REMOTE HOST</td>
0017: <td><?=gethostbyaddr($_SERVER["REMOTE_ADDR"]) ?></td>
0018: </tr>
0019: <tr>
0020: <td>REMOTE PORT</td>
0021: <td><?=$_SERVER["REMOTE_PORT"] ?></td>
0022: </tr>
0023: <tr>
0024: <td>HTTP USER AGENT</td>
0025: <td><?=$_SERVER["HTTP_USER_AGENT"] ?></td>
0026: </tr>
0027: <tr>
0028: <td>HTTP REFER</td>
0029: <td><?=$_SERVER["HTTP_REFER"] ?></td>
0030: </tr>
0031: <tr>
0032: <td>HTTP ACCEPT LANGUAGE</td>
0033: <td><?=$_SERVER["HTTP_ACCEPT_LANGUAGE"] ?></td>
0034: </tr>
0035: <tr>
0036: <td>HTTP CONNECTION</td>
0037: <td><?=$_SERVER["HTTP_CONNECTION"] ?></td>
0038: </tr>
0039: 
0040: </table>
0041: </body>
0042: </html>

プログラムを実行する

プログラムをダウンロードする

サンプル・プログラムの解説
サンプル・プログラムでは、HTML ソースの中に PHP スクリプトを埋め込んでいる。<?= ... ?> と記述することで、変数の値や関数の結果を簡単に表示することができる。

組み込み関数 gethostbyaddr は、DNS に問い合わせ、IP アドレスをホスト名に変換する。
参考書籍
(この項おわり)
header