今日から、アクセスログ集計するスクリプトを作ります。
本日は、接続元のアクセス情報を取得するスクリプトを作ります。
では、早速コーディングです。
-------------------------------
#! c:/perl/bin/perl
#サーバ出力
print <<END;
Content-type: text/html
<!DOCTYPE HTML PUBLIC !-//W3c//DTD HTML 4.01//EN">
<html>
<head><title>かんきょうへんすう</title></head>
<body>
<table border="1">
<tr>
<th>環境変数名</th>
<th>値</th>
</tr>
<tr>
<th>HTTP_REFERER</th>
<td>$ENV('HTTP_REFERER')</td>
</tr>
<tr>
<th>HTTP_USER_AGENT</th>
<td>$ENV('HTTP_USER_AGENT')</td>
</tr>
<tr>
<th>REMOTE_ADDR</th>
<td>$ENV('REMOTE_ADDR')</td>
</tr>
<tr>
<th>REMOTE_HOST</th>
<td>$ENV('REMOTE_HOST')</td>
</tr>
</table>
</body>
</html>
END
--------------------------------------
http://127.0.0.1/tendays/4-1.cgi 実行!
Content-type: text/html
環境変数名 | 値 |
---|---|
HTTP_REFERER | ('HTTP_REFERER') |
HTTP_USER_AGENT | ('HTTP_USER_AGENT') |
REMOTE_ADDR | ('REMOTE_ADDR') |
REMOTE_HOST | ('REMOTE_HOST') |
あれあれ・・・・。
環境変数の内容がでていないおかしいぞ。
$ENV('HTTP_REFERER') → $ENV{'HTTP_REFERER'}
$ENV('HTTP_USER_AGENT') → $ENV{'HTTP_USER_AGENT'}
$ENV('REMOTE_ADDR') → $ENV{'REMOTE_ADDR'}
$ENV('REMOTE_HOST') → $ENV{'REMOTE_HOST'}
かっこがまちがっていたようだ。
http://127.0.0.1/tendays/4-1.cgi 再実行!
環境変数名 | 値 |
---|---|
HTTP_REFERER | |
HTTP_USER_AGENT | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705) |
REMOTE_ADDR | 127.0.0.1 |
REMOTE_HOST |
HTTP_REFERERは、ブラウザが4-1.cgiにアクセスする前に、参照していたページが入ります。
ブラウザに直接URLを入力した場合は、空です。
HTTP_USER_AGENTは、ブラウザのOS等についての情報です。 今回は、Win2000からのアクセスです。
REMOTE_ADDRは、クライアントのIPアドレスです。パソコンから直接アクセスすると、127.0.0.1になります。
REMOTE_HOSTは、クライアントのホストのドメイン名です。パソコンから実行した場合は、空です。
おしまい。