CGI-BBS > 情報収集 > フォームメール > フォームメールの設置で必須項目をエラー表示できない。


カレッヂ
カレッヂ


質問者 苦戦中  投稿日 2006/5/29(月) 19:49:51
必須項目のエラー表示をフォーム入力順にしたい
でお世話になりました。
しかし、今度はエラーチェックしなくなったのですが?


#while (($key,$val) = each %in) {
#	if ($indispen{$key} && $val eq '') { push(@INDISPENs,$key); }
#}

foreach $in (@in) {

	($name) = $in =〜 /\bname="([^"]+)"/i;
	($name) = $in =〜 /\bname=([^\s:;]+)/i unless defined $name;

	if ($indispen{$name} && $in{$name} eq '') { push(@INDISPENs,$name); }
}

コメントアウトを復活させて、新スクリプトをコメントアウトすると
表示されるようになります。
何か設定が足らないのでしょうか?
ちなみにname値は全角(Shift_jis改行コードLF)です。

すみませんがよろしくお願いします。

【習熟度】多少の改造ができる

回答者 rescue  [削除]  投稿日 2006/5/31(水) 12:50:39
再確認しましたが、問題ありませんでした。何がおかしいんでしょうか。
$nameの値に何が入っているか確認するところからチェックしてみてください。

foreach $in (@in) {

	($name) = $in =〜 /\bname="([^"]+)"/i;
	($name) = $in =〜 /\bname=([^\s:;]+)/i unless defined $name;

	push(@test,"$in - $name ($in{$name}) ($indispen{$name})"); &error("テスト",@test);
	#if ($indispen{$name} && $in{$name} eq '') { push(@INDISPENs,$name); }
}

どういうフォームで何を空欄チェックしているのか、こちらには分かりませんので、
この結果に対して何をチェックしたらいいかは、設置しているURLと結果を
書いていただかないと説明は出来ません。
質問者 苦戦中  [削除]  投稿日 2006/5/31(水) 14:07:59
色々ご迷惑をおかけしております。
言葉足らずですみません。

ご指摘のスクリプトを入れたところ$nameには

%8E%81%96%BC= - () ()

が入っていました。(%8E%81%96%BCをエンコードすると氏名になりました)

原因を探っていきましたら
HTML<form>タグ内に enctype="multipart/form-data" を追加したら
表示されるようになりました。

誠にご迷惑をおかけしました。
これからもよろしくお願い致します。



回答者 rescue  [削除]  投稿日 2006/5/31(水) 14:25:59
> 原因を探っていきましたら
> HTML<form>タグ内に enctype="multipart/form-data" を追加したら
> 表示されるようになりました。

貴重なレポートありがとうございます。
これは対策してませんでした。
修正したいと思います。

foreach $out (@out) {

	($name,$value) = split("\0",$out);
	if ($indispen{$name} && $in{$name} eq '') { push(@INDISPENs,$name); }
}

if (@INDISPENs) { &error("未記入があります",'<h3>次の項目は必須入力です.</h3>',"<i>@INDISPENs</i>"); }
質問者 苦戦中  [削除]  投稿日 2006/5/31(水) 14:43:38
素早い回答ありがとうございます。

これからも頑張ってください。
ありがとうございました。

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


Web裏技