ログを取るときに重要なものとして、IPアドレスとホスト名があります。 これらの情報は、アクセス制限をする場合などに必要な情報になりますのでログとして保存できるようにしておきます。
プログラム例:
$host = $ENV{ 'REMOTE_HOST' };
$addr = $ENV{ 'REMOTE_ADDR' };
if( $host eq '' ) {
$host = $addr;
$host = gethostbyaddr( pack( 'C4', split( /\./, $host ) ), 2 ) || $addr;
}
「$ENV」とは環境変数という特殊な変数で、この中にはHTTPで送られたデータのヘッダ情報が入ります。 具体的には、ホスト名やIPアドレス、ブラウザ名、OS名などが格納されます。
「$ENV{ 'REMOTE_HOST' }」とすることでホスト名を取り出すことができ、それを「$host」に格納します。 「$ENV{ 'REMOTE_ADDR' }」にはIPアドレスが入っていますので、それを取り出し「$addr」に格納します。
「if( $host eq '' )」はもし「$host」の中が空の場合には「$host = $addr」、IPアドレスを「$host」にコピーしておきます。 次に、「gethostbyaddr関数」を使ってDNSサーバからIPアドレスからホスト名を逆引きで問い合わせ、その結果を「$host」に格納します。 サーバによってはDNSが設定されていない場合、ホスト名が取得できない場合があります。