$FORM{'email'}と$FORM{'メールアドレス'}

[上に] [前に] [次に]
よっち 1999/10/23(土) 03:57:09
まだcgiを初めて日が浅いため
素人っぽい質問になってしまいますが、

$FORM{'email'}として渡すところを
$FORM{'メールアドレス'}みたいにしたいとき、つまり
<input type="text" name="メールアドレス"....のような
入力画面のときはどうすれば
正常に機能するのでしょうか?

かや 1999/10/23(土) 05:25:33
詳しくは知りませんが、
スカラー変数名に使用できるのは英数字と数字と下線_のみではないですか?

かや 1999/10/23(土) 05:36:16
すみません上の発言はゴミでした。

かや 1999/10/23(土) 06:21:59
私こそバリバリの素人ですが・・、
<INPUT>のname,valueをスクリプト内でそれぞれ$name,$valueとして
$FORM{$name}=$valueのようにしているんだと思いますが、
この$nameというのを$valueと同じように
デコードとか文字コード変換してやればいいのではないでしょうか。
# これもゴミだったらごめんなさい。
# でも上の発言だけじゃあんまりなので・・(寝惚けてたのね)。

かや 1999/10/24(日) 16:10:03
../199910/99100138.htm
これを見つけたので上の発言は取り消します。
言い訳ですが自分が日本語使おうと思ったことがないので
制限とか意識してませんでした…。すみません。

B-Cus 1999/10/24(日) 18:24:03
 <input type="text" name="%83%81%81%5B%83%8B%83A%83h%83%8C%83X" ..>
と事前にURLエンコードしておくか(これはSJIS)、
 <input type="text" name="メールアドレス" ..>
と書いておいて、
> この$nameというのを$valueと同じように
> デコードとか文字コード変換してやればいいのではないでしょうか。
すればいいでしょう。後者は HTML としては間違いですが。

http://www.tohoho-web.com/cgi-bin/wwwmail.txt
        foreach $x (@a) {
                ($name, $value) = split(/=/, $x);
                $name =~ tr/+/ /;
                $name =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
                &jcode'convert(*name, "jis");
                $value =~ tr/+/ /;
                $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
                $value =~ s/[\r\n]+/\n/g;
                &jcode'convert(*value, "jis");
としてますね。

ただし、僕はメリットがないと思うので勧めません。

kala 1999/10/24(日) 21:29:30
単にCGIスクリプト中にあるすべての「$FORM{'email'}」を「$FORM{'メールアドレス'}」に置換すればいいのでは。(そういう質問じゃないのかな?)

[上に] [前に] [次に]