投稿者のホスト情報を記録する

投稿者のホスト情報を記録する

今回は投稿者のホスト・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アドレスを記録します。