質問: $ENV{'REMOTE_HOST'}; も、ブランクしか帰しません。ちなみに$ENVを たとえば PATH に変更しますと、きちんとその 値を返します。これもアドバイスお願いします。
回答: 私もそういったCGIを良く組みます。 私の場合はjcode.plを使っては居ません。 で、jcode.plは日本語コードの相互変換用なので、POSTした場合に変換される文字列はコンバート出来ないと思います。(POSTでは日本語コードがそのまま届くわけではないため) 私は以下のコードをいつも使っています。 #QUERY_STRINGの解析 $cl = $ENV{"CONTENT_LENGTH"}; read(STDIN,$qs,$cl); @qs = split(/&/,$qs); foreach $i (0 .. $#qs) { $qs[$i] =~ s/\+/ /g; $qs[$i] =~ s/%(..)/pack("c",hex($1))/ge; ($name,$value) = split(/=/,$qs[$i],2); $qs{$name} = $value; } CONTENT_LENGTHでPOSTした文字列の長さを調べ 標準入力からPOSTした文字列を取得します。 そして、取得した文字列を&で分割して配列に放り込み その書く配列で%xxなどの変換を行った後、NAMEとVALUEに分割し、NAMEを配列名とした連想配列に放り込みます。 GETの場合は、QUERY_STRINGに文字列が格納されています。 このコードは、インプレスから発行されている、CGIブックに載っているやり方です。内容的には古いですが、CやPerl、ShellでCGIを組む方法が掲載されています。結構便利なので一度見てみると良いと思います。 それと、FORM側で、encoding設定(ちょっと自信なし)を入れておくと、文字列のエンコードをして送ってくれるようです。 次にREMOTE_HOSTですが、取得できないサーバーが以外と有ります。 私が経験したのではトクトクとい無料サーバーでは取得できませんでした。ですが、REMOTE_ADDRは取得可能なので、そっちでIPアドレスを取得した方が良いと思います。 ただ、どっちも動かない場合は、サーバー管理者に環境変数がどれだけ取得できるか問い合わせた方が良いでしょう。