プロが教えるわが家の防犯対策術!

フォームに年月日を入力してもらい、下記のスクリプトで
入力画面を表示させようとしています。
年月日を入力するフォームにはhiddenをいれ、if文でサブルーチン
&newFormを表示させようとしているのですが、うまくいきません。
<input type=hidden name=mode value="data">

if文を使用せずに、&newFormを直接呼び込むと表示するのですが・・・。

ぜひご教授願えればと思います。
よろしくお願いします。

=====================================================================
&query; # 初期設定

if($in{'mode'} eq "date"){ &newForm; }

sub newForm{

print"Content-type:text/html\n\n";
print <<EOF;
<html>
<head>
<title></title>
</head>
<body>
<textarea name="diary" rows="30" cols="70"></textarea><br>
<input type="submit" value="書き込み">
</body>
</html>

EOF

}

sub query{

$ENV{'REQUEST_METHOD'}=~ tr/a-z/A-Z/;
if ( $ENV{'REQUEST_METHOD'} eq "POST" ){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else{
$buffer = $ENV{'QUERY_STRING'};
}

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$in{$name} = $value;
}

}

A 回答 (2件)

少し気になったので。



FORM側
<input type=hidden name=mode value="data">

CGI側
if($in{'mode'} eq "date"){ &newForm; }

もしかして、「date」と「data」の打ち間違いではありませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
イージーミスでした。。。
てっきりスクリプトが原因だと思っていました。

お礼日時:2003/03/15 15:05

$in{'mode'}に正しくデータが入っているかを確認してはどうでしょう?


ここにデータが正常に入っていないような気がします。

><input type=hidden name=mode value="data">

とは、フォーム(&newForm)を表示させるためのフラグに使用しているんですよね?
これが正常に送信されているかを確認すれば、原因がどこにあるのか掴めると思いますよ。

色々な所でデータをprint ()してみるのは、デバッグの基本的なやりかたです。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
printで確認すればよいんですね。
ひとつ勉強になりました!!

お礼日時:2003/03/15 15:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!