• ベストアンサー

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

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

  • CGI
  • 回答数3
  • ありがとう数7

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

  • ベストアンサー
  • 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

関連するQ&A

  • 何れかが入力されていれば全て入力

    お世話になっております。 http://odn.okwave.jp/kotaeru.php3?q=1948331 の質問に一部関連しているので続けてお伺いしておけばよかったのですが、 締め切ってしまいましたので申し分けありませんが新たに質問させて頂きました。 cgi/perlを使用したメールフォームで製品登録を行えるものを作成中です。 一つの製品についてkounyuu_01,shouhin_01,price_01という3つの入力項目があり、 何れかの項目が入力されていれば他の項目も必須。 という条件を設けたいと思っています。上記「入力規則をまとめて定義」(リンク)の質問でがるさんにアドバイスいただいた記述を少し変えればできるかなと思い試したのですが力及ばずでした。 置き換えなどが良くわからないので直に以下のようにも書いてみたのですが、全て入力してもエラーが返ってきてしまいます。 if(($form{kounyuu_01} eq "") && ($form{shouhin} eq "") && ($form{price_01} eq "")){ &error('機器#2の情報を入力してください'); }elsif(($form{kounyuu_01} eq "") | ($form{shouhin} eq "") | ($form{price_01} eq "")){ &error('機器#2の何れかの情報が未入力です'); } また、 「入力規則をまとめて定義」(リンク) でEtherskyさんに(共通項目_数字)の場合まとめて定義する方法をご教授頂いたので、 応用して上記を「(xxxx_01)だった場合」 のように今度は01をキーにまとめて定義できたらと思うのですがこちらもさっぱりです。。 どうぞアドバイスのほどよろしくお願いいたします。m(__)m

    • ベストアンサー
    • CGI
  • 入力内容のチェック・・・『または』の場合

    いつもお世話になっております。 お問い合わせフォームCGIで未入力のチェックを行っています。 CGIは前任者が作ったもので、引き継いだ私自身はCGI初心者です。 sub sendmail { if ($namecheck eq "1" && $in{'name'} eq "") { &error("お名前は必ずご記入ください"); } elsif ($op_value1 eq "") { &error("フリガナは必ずご記入ください"); } ・ ・ ・ ↑こんな感じです。 $op_value9~$op_value12の値(フォーム上ではチェックボックスを使用)についても入力チェックを行いたいのですが、9~12を1グループと考え、いずれかに値が入っていた場合はエラーを出さずにOKとしたいと思います。 そこで、初心者なりにネットを調べ elsif ($op_value9 eq "" || $op_value10 eq "" || $op_value11 eq "" || $op_value12 eq "") { &error("項目を一つ以上選択してください"); } &&を||にすればいいのでは・・・?という結論にいたったのですが、 ダメでした。 どうしたらいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • チェックボックスの入力チェック

    フォームメール用のCGIを作成しているのですが、チェックボックスの入力チェックをCGIでおこないたい場合、どのようにすればよいのでしょうか? 複数選択可で1つも選択されていない場合エラーメッセージを出すようにしたいと思っており、チェックボックスには1個づつ個別の変数を用意しています。 if ($name eq "") { print "Content-type: text/html;charset=euc-jp\n\n"; print "お名前を入力してください。"; exit(0); } テキストボックスはこのように入力チェックをおこなっています。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • perl フォームの入力値のチェック セキュリティ

    フォームの入力値のチェック方法についての質問です。 名前、電話番号、Eメール、住所、注文商品、数量の入力フォームです。 入力値の取得は、ライブラリ「cgi-lib.cgi」を利用しています。 (以下perlのソース) #!/usr/bin/perl -T #入力値の取得 require 'cgi-lib.cgi'; &ReadParse(*form); $name = $form{'name'}; $tel = $form{'tel'}; $email = $form{'email'}; ・・・・以下同様の処理が続くだけなので省略 #サブルーチンを利用して入力値をチェック $name = &Wash($name); $tel = &Wash($tel); $email = &Wash($email); ・・・・以下同様の処理が続くだけなので省略 #サブルーチン部分 sub Wash{ if($_[0] =~ /^([^|><\/]+)$/){return $_[0];} elsif($_[0] eq undef){return "未入力";} else{return undef;} } (perlのソース ここまで) としてから、通常の処理に入るようにしてみたのですが セキュリティー上の問題があれば教えてください。 入力値から、コマンドやスクリプトが実行(XSS)されてしまう可能性はありますか? お願いします。 またメタ文字が見つかった場合の処理についてですが とりあえずよくわからないので。「undef」を返して いるのですが、他に良い方法があれば教えてください。

    • ベストアンサー
    • CGI
  • OCNのメールフォームで入力必須項目を

    プロバイダがOCNで、ホームページを作っています。 メールフォームを設置したいのですが、 OCNのメールフォームで 名前やメールアドレスの項目を 入力していない場合、入力してくださいなどの注意がでるように 入力必須項目にしたいのですが、 OCNのメールフォームCGIを使った場合でも それはできるのでしょうか?? 教えて下さい。

    • 締切済み
    • CGI
  • 入力チェックについて

    今、メールフォームを作っているのですがHTMLで入力してもらいkakunin.phpでチェックします。入力ミスがあれば、error.htmlへミスが無ければそのままkakunin.phpで表示したいのですが、中々上手くいきません。長い文で恐縮ですがよろしければご教授ください。 ★HTML★ <form name="form1" method="post" action="kakunin.php"> <td width="64">お名前</td> <td width=<input type="text" name="name"></td> </tr> </table> <input type="submit" name="Submit" value="送信"> </form> ★kakunin.php★ <?php $name=$_POST["name"] $Submit=$_POST["Submit"] //記入チェック if($Submit=="送信") { if (empty ($name)){ header("Location: error.html"); exit; } } ?>

    • ベストアンサー
    • PHP
  • 携帯用のメールフォームのMethod

    ある、HP作成送付とを使って携帯用のメールフォーム(3機種対応)を作りましたが、既存のCGIがうまく稼動しません。 マニュアルをみると、携帯用ではMethodをPOSTではなく、GETに指定しろ。 と、有りますが、CGIのソースのどの部分を変更したらいいのか分かりません。 一応、予測してPOSTと記載されているソースを全てGET に直したのですが、旨く、稼動しません。 (「このCGIは直接稼動していません・・・」が表示される。if ($buffer eq '') ってどんな条件なんでしょうか?) 携帯用のメールフォームのCGIを配布しているサイト、もしくは下記のソースで修正すべき点をご存知の方、 教えてください!!お願いいたします。 ソース-------------------- . . . #データ入力 if ($ENV{'REQUEST_METHOD'} ne "GET") { &error('エラー','標準入力 METHOD=GET を設定してください.<br>&lt;form method=get action=........&gt;'); } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if ($buffer eq '') { &error('エラー','このCGIは直接起動されません.'); } $ref = $ENV{'HTTP_REFERER'}; $buffer2 = $ENV{'QUERY_STRING'}; if ($buffer2 ne '') { &error('エラー','標準入力 METHOD=GET に設定してください.<br>&lt;form method=get action=........&gt;'); }

    • ベストアンサー
    • CGI
  • KENT WEBのPostMail

    初めまして。 メールフォームを設置したいと思い、ここで「KENT WEBのPostMailがいい」と教えていただきました。 早速ダウンロードして設置してみたのですが、 うまくいかない部分があります……。 HP上にアップロードすることは出来たのですが、その画面で送信ボタンを押すと「Internal Server Error」というエラー画面が出ます。 それと、メールアドレスの入力を必須からフリーにしたいのですが、その場合はPostMail.cgiのどこを修正すればいいのでしょうか? 教えてください、お願いします。

  • input type="file"の入力チェック

    よろしくお願い致します。 入力チェックページ付きのメールフォームについて、添付ファイルを必須項目にしたいと考えております。 <input type="text" name="お名前" />の場合は、以下のようなコードで入力チェックしております。 if($DATA['お名前'] == ""){ $err.="【お名前】を入力して下さい。\n"; } <input type="file" name="添付ファイル" />の添付ファイルも同じコードで試してみたところ、 if($DATA['添付ファイル'] == ""){ $err.="【添付ファイル】を選択して下さい。\n"; } ファイルの添付の有無に関わらず、「添付ファイルを選択して下さい。」というエラーコードが常に表示されます。 「input type="file"」の場合の入力チェックはどのようなコードを書けば良いのでしょうか?

    • 締切済み
    • PHP
  • フォームメールで、入力必須を作る。

    CGIを少しずつ理解し始め、フォームメールを作り始めることにしました。 そのなかで、"入力必須項目"を作りたいのですが、どうしたらよいのでしょうか? Yahoo!で検索したのですが、うまく引っかからなかったもので・・・。 やっぱり、CGIの技術が必要になるんですか??