ホスト名の取得
IPアドレスは環境変数$ENV{'REMOTE_ADDR'}で取得できます。しかし、ホスト名はDNSサーバ問合せの負荷がかかる為、環境変数$ENV{'REMOTE_HOST'}では取得できない場合が多いようです。
そこで、IPアドレスからホスト名を取得するにはgethostbyaddrを使います。

gethostbyaddr IPアドレスに対応するホスト名を取得します。
         例 $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2);
             pack'C4':char値4個の引数によるバイナリデータ
             $addr: IPアドレス
              2 : インタ−ネットIPプロトコル(IPv4)の指定
■プログラム (sample27.cgi)
$addr = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack('C4',split(/\./,$addr)),2);
print "$addr<br>$host";
■実行結果
210.249.201.242
a02-242.ip-tokyo.highway.ne.jp


HOME Copyright (C) CGI-design All Rights Reserved.