フリーCGIスクリプト配布サイト。
今回は投稿者のホスト・IPアドレス情報を記録するように改造してみます。記録しておく事により、どこから投稿されたのかなど、ある程度判断する事ができるようになります。
ホスト情報やIPアドレスを取得するには、環境変数を使用します。例えば
$ENV{'REMOTE_HOST'}
とすると訪問者のホスト情報を取得する事ができ、
$ENV{'REMOTE_ADDR'}
とすると訪問者のIPアドレス情報を取得する事ができます。以下のプログラムを作成し、実際にアクセスしてみるとわかりやすいでしょう。
#!/usr/local/bin/perl
print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>ホストは$ENV{'REMOTE_HOST'}です。</p>\n";
print "<p>IPアドレスは$ENV{'REMOTE_ADDR'}です。</p>\n";
print "</body>\n";
print "</html>\n";
exit;
ホストは sample.abc.ne.jp
のような情報が、IPアドレスは 127.0.0.1
のような数値がそれぞれ表示されたかと思います。(サーバーによっては取得できない事があります。)
今回は掲示板に投稿された際、ホストが取得できればホストを、取得できなければIPアドレスを記録するように改造してみます。
unshift(@file, "$in{'handle'}\t$in{'message'}\t$date\n");
この部分を以下のように変更します。
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($host eq '') {
$host = $addr;
}
unshift(@file, "$in{'handle'}\t$in{'message'}\t$date\t$host\n");
これでホスト情報がファイルに記録されます。また、ホストが取得できないときはIPアドレスを記録します。