CGI-BBS > SO−HO > ショッピングバスケット > webform.cgiでホスト名を取得したいのですが。


カレッヂ
カレッヂ


質問者 びわ  投稿日 6/14(木) 16:03:18
簡易ショッピングバスケットを使っています。
現在送られてくるメールには、
Remote-host       :
Remote-Addr       : ***.***.***.***
というふうに、addrは表示されるのですが、
host欄は、空欄です。

webform.cgiの
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
という所を
$host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr;
$addr = $ENV{'REMOTE_ADDR'};
と変えてみましたが、host欄は、空欄のままです。

どうしたら、host名を取得できますでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 6/14(木) 17:12:53
ホスト名が取得できないサーバも存在します。むしろその方が多いかもしれません。
まずはサーバの管理者に問い合わせてみて下さい。
質問者 びわ  [削除]  投稿日 6/14(木) 18:04:44
お返事ありがとうございます。
サーバーの説明には、「gethostbyaddr をご利用ください」
と書いてあります。
また、同サーバーに設置してある掲示板からのsendmailには
ホスト名が表示されます。

というわけで、サーバーの問題は無いと思うのですが・・・
他には、どんな可能性がありますでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 6/14(木) 20:16:15
$host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr;
$addr = $ENV{'REMOTE_ADDR'};
は正しくないですね。これを使うなら
$addr = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;
とするべきでしょう。
質問者 びわ  [削除]  投稿日 6/14(木) 22:19:30
>しあわせのツボさま
できました〜!ありがとうございます。
順番が逆なだけで、全くダメなのですね。

調子に乗って、もうひとつ質問させて下さい。
他のcgiでやはりメールが届くようにしてある物があるのですが、
そのメールにはhostもaddrも書き込まれないのですが、この
$addr = $ENV{'REMOTE_ADDR'};
$host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;
をcgiに加える事で、ホスト名を取得出来るようになるのでしょうか?
もし、加えるとしたら、cgiのどの位置に加えるかは決まっているの
でしょうか?

それとも、ここまでの事をやるには、もっとcgiについて勉強しない
と無理でしょうか?恥ずかしながら、cgiの本とかを読んだ事はあり
ません。

回答者 しあわせのツボ  [削除]  投稿日 6/14(木) 23:32:56
それを加えた上で「送るメールにこれも書いてね」と教えてあげないといけません。
当然、書くべき場所はスクリプトによって異なります。
質問者 びわ  [削除]  投稿日 6/15(金) 00:22:29
なるほど、なるほど。わかりやすい説明ありがとうございます。
少し先の目標として、いろいろなcgiの中身を見比べ、勉強して
みます。本当にありがとうございました。

このページは終了したので返信(回答)は書きこめません

Web裏技