• ベストアンサー

未入力のチェックをするには?

「とほほのwww入門」さんのwwwmailというメールフォームcgiを使わせてもらっています。 このメールフォームに未入力のチェックをさせたいのですが、どうしてもうまくいきません。 例えば「名前」を入力必須項目にしたいので、未入力だった場合、エラーを表示させたいのです。 他のサイトなどを参考に、 #名前がないときの処理 if ($FORM{'NAME'} eq "") { &err('名前が記入されていません。'); } と入れてみたりしたのですが、Internal Server Error がでてしまいます。 また、現在配布されているものと違ったりするようです。 CGIに関してはあまり詳しくなく、本当に簡単な改造をしたことがある程度です。どなたかご存知の方がいらっしゃいましたらぜひ宜しくお願いいたします!

質問者が選んだベストアンサー

  • ベストアンサー
  • leap_day
  • ベストアンサー率60% (338/561)
回答No.3

ちは(^^) 僕もまだあまり詳しくないので基本的な感覚で$in{'NAME'}の答えを出したのですが(自分はいつもこれで使ってるので・・・) 『WwwMail Ver3.26 - メール送信フォーム』ですか? 僕も初めDLして表示しようとしたらサーバーエラーが出ました(><) #!/usr/local/bin/perl 僕はアパッチを使ってるのでここの記述が違ってて (まだ僕はHP公開はしてないのでデバック表示しかしてないので↓は使えないかもしれないですけど) #! c:/perl/bin/perl としたらwwwmail.cgiスクリプト内の『自己診断機能』というところが表示されました mimew.pl jcode.pl BLATJ.EXE が無い状態で表示しようとしたため(--;) 元の(何も手を加えていない)ほうは正常に機能するのでしょうか? wwwmail.htmlは普通に表示されるでしょうからwwwmail.cgiのほう・・・ デフォルトで表示されないのなら行頭の部分が違うと思います 表示されて 『CGIは正常に動作しています。 ~~~~ がありません。』 という風に表示されるのであれば・・・まぁフォルダそのまま使うのでしょうからplファイルはあるので『/usr/lib/sendmail がありません。』が表示されるかな? ↑が表示されてるなら『readme.html』を開いて『設置方法』の2か3を試してください あと『&err』 つつかないのであれば『&errexit』でエラー表示画面になります デフォルトは使えるというのであれば手を加えた方のどこかに記述ミスがあるのだと思います ん~sendmail機能はまだ使う予定無いので動作確認はしてないですけど・・・ 思いつくのはこれくらいかな? デフォルトが使えるならJavascriptで未入力チェックをすることもできますよ(^^)↓

参考URL:
http://javascript.eweb-design.com/1207_ma.html
yuka0709
質問者

お礼

leap_dayさんご回答ありがとうございます。 >あと『&err』 >つつかないのであれば『&errexit』でエラー表示画面になります の部分で教えていただいた通り、「&err」を「&errexit」に直したら無事稼動しました! 私の基本的な知識が無いために気づくことができませんでした。 また、Javascriptでのチェックも参考になりました。 色々と調べて、丁寧に教えていただき本当に感謝しております。 これからもっと勉強していきたいと思います。 ありがとうございました!!

その他の回答 (2)

  • aikata39
  • ベストアンサー率25% (1/4)
回答No.2

>#名前がないときの処理 >if ($FORM{'NAME'} eq "") { >&err('名前が記入されていません。'); >} >と入れてみたりしたのですが、 ↓に修正してみてはどうでしょう。 #名前がないときの処理 if ($FORM{'NAME'} eq "") { &errexit("名前が記入されていません。"); }

yuka0709
質問者

お礼

aikata39さん、ご回答ありがとうございます。 教えていただいた通り、 >#名前がないときの処理 >if ($FORM{'NAME'} eq "") { >&errexit("名前が記入されていません。"); >} の記述で無事稼動いたしました。 &errexitを&errと記述していたのが間違いであったようです。 お恥ずかしい限りです。 本当に、ありがとうございました。

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.1

フォーム内容を次のcgiページに送信してるのですよね? んで未記入だったらエラーページを表示・・・でいいですか? if($in{'name'} eq "") { $hit=1; last; } if(!$hit) { &err("名前が入力されていません"); } もしくは if($in{'name'} eq "") { &err("名前が入力されていません"); } で試してみてください &err のところは sub err { } でhtml表示できるように作ってますか?

yuka0709
質問者

お礼

leap_dayさん、さっそくのご解答ありがとうございます!! 教えていただいたように、 >if($in{'name'} eq "") { $hit=1; last; } >if(!$hit) { &err("名前が入力されていません"); } > >もしくは > >if($in{'name'} eq "") { &err("名前が入力されていません"); } を、 # EMAILが正常なメールあどれすかどうか判断する # if ($FORM{'EMAIL'} =~ /^[-_\.a-zA-Z0-9]+\@[-_\.a-zA-Z0-9]+$/) { $mailfrom = $FORM{'EMAIL'}; } の後に入れてみたのですが、やはりInternal Server Error がでてしまいました。 >&err のところは >sub err { >} >でhtml表示できるように作ってますか? ということですが、配布されているプログラムそのままで エラーの時にhtml表示できるようになっていると思うのですが、 何か別に手を加えなくてはいけないですか? 何度も申し訳ありません。宜しくお願いしますm(_ _)m