サンプル・プログラムの実行例

サンプル・プログラム
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:ヘッダーの内容。 ただし、該当するヘッダーがある場合のみ定義される。 |
サンプル・プログラムの解説
0130: /**
0131: * HTTP変数一覧を作る
0132: * @return string変数一覧(HTML)
0133: */
0134: function makeCommonBody() {
0135: //HTTP変数
0136: $httpvars = array(
0137: 'REMOTE_ADDR' => 'IPアドレス',
0138: 'REMOTE_HOST' => 'ホスト名',
0139: 'REMOTE_PORT' => 'ポート番号',
0140: 'HTTP_USER_AGENT' => 'ユーザーエージェント',
0141: 'HTTP_REFERER' => '参照ページアドレス',
0142: 'HTTP_ACCEPT_LANGUAGE' => '言語',
0143: 'HTTP_CONNECTION' => 'コネクションヘッダ'
0144: );
0145: //REMOTE_HOSTがなければgethostbyaddrで取得
0146: if (!isset($_SERVER['REMOTE_HOST']) || $_SERVER['REMOTE_HOST'] == '') {
0147: $_SERVER['REMOTE_HOST'] = gethostbyaddr($_SERVER['REMOTE_ADDR']);
0148: }
0149:
0150: //表示用HTML作成
0151: $caption = TITLE;
0152: $refere = REFERENCE;
0153: $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
0154: $width = WIDTH;
0155: $debug = '';
0156:
0157: //デバッグ情報
0158: if (! FLAG_RELEASE) {
0159: $phpver = phpversion();
0160: $debug =<<< EOT
0161: <p>
0162: <span style="font-weight:bold;">★デバックモードで動作中...</span><br />
0163: PHPver : {$phpver}
0164:
0165: EOT;
0166: }
0167:
0168: $html =<<< EOT
0169: <table class="plists">
0170: <caption>{$caption} {$version}</caption>
0171: <tr>
0172: <th>変数</th>
0173: <th>値</th>
0174: <th>説明</th>
0175: </tr>
0176:
0177: EOT;
0178: foreach ($httpvars as $key=>$discript) {
0179: if (isset($_SERVER[$key])) {
0180: $ss = htmlentities($_SERVER[$key]); //XSS対策
0181: $html .=<<< EOT
0182: <tr>
0183: <td class="index">{$key}</td>
0184: <td class="value">{$ss}</td>
0185: <td class="description">{$discript}</td>
0186: </tr>
0187:
0188: EOT;
0189: }
0190: }
0191: $html .=<<< EOT
0192: </table>
0193:
0194: <div style="border-style:solid; border-width:1px; margin:20px 0px 0px 0px; padding:5px; width:{$width}px; font-size:small; overflow-wrap:break-word; word-break:break-all;">
0195: ※参考サイト:<a href="{$refere}">{$refere}</a>
0196: {$debug}
0197: </div>
0198:
0199: EOT;
0200: return $html;
0201: }

$_SERVER['REMOTE HOST'] の値がない場合は、組み込み関数 gethostbyaddr を利用し、DNSに問い合わせてIPアドレスをホスト名に変換するようにしてある。
参考サイト
- IPアドレスから個人情報を特定できるか:ぱふぅ家のホームページ
個人を特定できるような情報が送られるというのは都市伝説で、実際には、アクセスしているクライアントのIPアドレスやブラウザの種類が送信されるだけである。それでも、アクセス解析のための情報として重宝する。
そこで今回は、PHPを使って、ブラウザがどのような情報を送っているのか表示するプログラムをつくる。
(2021年7月4日)XSS対策,スタイルシート変更