今日から、アクセスログ集計するスクリプトを作ります。


本日は、接続元のアクセス情報を取得するスクリプトを作ります。




では、早速コーディングです。

-------------------------------

#! 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は、クライアントのホストのドメイン名です。パソコンから実行した場合は、空です。


おしまい。