• ベストアンサー

フォームのエラーチェック

aのフォームがhogeで、bに記入されていない場合、 bのフォームを再表示させようと思うのですが、 エラーチェック自体スルーしてしまいます。 どこの部分に問題があるのでしょうか? どなたか御教授お願いいたします。 sub chkFormInput { my $errNum = 0; if ($a eq 'hoge' & $b eq ''){ $errMsg .= ', bの項目'; $errNum++; $e_b = 1; } return 1; }

  • izaq
  • お礼率43% (19/44)
  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
回答No.1

if ($a eq 'hoge' && $b eq ''){ # ← ここ '&' はビット演算なので falseになり実行されません。

izaq
質問者

補足

Marionetteさん ご返事ありがとうございます。 '&' 以外で使える書式はあるのでしょうか? 他の方法があれば教えていただけないでしょうか? よろしくお願いいたします。

その他の回答 (1)

回答No.2

あれっ、修正した答えが書いてありますよ。 '&' じゃなくて '&&'です。確認してください。

izaq
質問者

お礼

Marionetteさん すみません勘違いしてました。 うまく動作致しました。ありがとうございます。

関連するQ&A

  • 入力フォームをCGIでエラーチェック→PHPにデータを送る

    CGIでフォームの入力をチェックした後、データをphp に送ろうと思います。 今まで使用してた、エラーチェックした後、データを、管理者にメールでデータを送信させるCGIをカスタマイズして、エラーチェックの後に、PHPへデータを送ることは可能なのでしょうか? どなたか御教授お願いいたします。 以下はエラーチェック後の部分です。 $errNum = chkFormInput(); fixTags(); open HTML, $template or err("$templateが開けません"); @html = <HTML>; close HTML; if ($errNum > 0){ # エラーメッセージの先頭のカンマをはずす $errMsg =~ s/^,//; $errMsg = "<font color=\"red\">$errMsg (計$errNumヶ所)"; $errMsg .= "に未入力、又は不適当な入力があります。<br></font>\n"; }elsif (sendmail() && stockData()){ $errMsg = "ありがとうございました。以下の内容で$adminName($adminMail)に送信しました。"; } replaceTags(); showHTML(); exit();

    • 締切済み
    • CGI
  • メール入力→(確認)メール入力でのチェック

    よくフォームメールなどの、 メールアドレスを入力するところで、 もうひとつ同じアドレスを入力して、 内容が違っていないかエラーチェックを するものがありますよね。 例えば最初に入力したデータを$emailとしまして、 確認の入力データを $email1としたばあい、 比較して同じデータならエラーをださない。 違うもののばあいエラーをだすというのは、 どうすれば良いのでしょうか?? if ($email1 !=~ /$email/){ $errMsg .= ', e-mail(確認)'; $errNum++; $e_email1 = 1; } return $errNum; } いろいろ考えてみましたが、うまくいかないのです。 どなたかご教授お願いいたします。

    • ベストアンサー
    • CGI
  • 入力フォームに全角・半角スペースがある場合

    入力フォームに全角・半角スペースがある場合に、 データを受け取ったCGIのほうで、エラーメッセージを出そうとおもうのですが、 if ($name_l eq ' ' or $name_l eq ' '){ $errMsg .= ',Name'; $errNum++; $e_name_l = 1; } 上記のやり方だと、複数フォームにスペースが入力された時に、エラーの指事がでないのです。 どなたかご教授お願いいたします。

    • ベストアンサー
    • CGI
  • ちょこっと改造教えてください

    携帯用メールフォームのcgiを設置しました。 ほとんど触っていないので正常に動作しています。 メールアドレス記入が [      ]@[selectになってる] ←@の前と後と分割されています。 必須項目チェックのメールアドレスチェックのソースが ---ここから--- #メールアドレスのチェック &isMail(); sub isMail{ my $str=$_[0]; my $regex ="^[^@]+@[^.]+\..+"; if ($str =~ /$regex$/) { return 1; }else{ return 0; } } if(isMail($mail) eq '0'){ if($hensin eq "1" ){ &err1('メールアドレスが正しく入力されていないようです。お手数ですが、前の画面に戻って入力し直してください。'); } ----ここまで--- となっています。 これを、メールアドレス記入 [      ]←@で分割しない に変更したいのですが、 この場合ソースをどのように修正すれば良いでしょうか。 色々探したり試しましたがあまり知識がないのでわかりませんでした。 よろしくお願いします。

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

    こんにちは、今回はホームページのワザについて教えて下さい~。 今フォームを作成してアンケートを回答してもらうページを作成中なのですが、そこで躓いてしまいました。 CGIでフォームを作成しているのですが、そのフォームの中の回答で必須項目を作りたいのです。回答していないで送信ボタンを押すとダイヤログが出て「××をご記入ください」のようなメッセージを出す・・・こんなのが理想なのです。 今普通にCGIでフォームだけは完了したのですが、そのチェック機能をjavaでつけても動いてくれないのです(泣)。全くjavaが働かず、普通に送信されてしまいます。 CGIを外してjavaだけでやろうとするとアドレスを予め設定していないという事でエラーになりますし・・・。今は <SCRIPT language="JavaScript"> <!-- function Check(){ if(document.myform.ks.value==""){ alert("必須項目を記入してください。"); return false; } ・ ・ ・ // --> </SCRIPT> </HEAD> <BODY><!--××× CGI Program--> <FORM action=http://www.CGIのテキストまでのパス.txt method=post onSubmit="return Check()"><INPUT type=hidden value=××@×× name=sendto><INPUT type=hidden value=/mail/××.htm name=success><!--ここまで--><A name=TOP></A> としてあります・・・。 すみません!どなたかわかる方!ぜひ教えて下さい、お願いいたします!

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

    いつもお世話になっております。 お問い合わせフォーム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
  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • フォームの入力欄の未記入チェック方法

    フォーム内のテキストボックスやチェックボックスでひとつでも未記入項目があると「未記入項目があります」のダイアログボックスを表示させて元の画面にもどりたいのですが if(document.フォーム名.部品名.value == "") { alert( "名前を記入してください" ); document.フォーム名.部品名.focus(); return false; } } 上のソースでは部品の数だけ同じ処理を書かないといけないのです。この中に全ての部品をまとめてひとつでも空欄があればエラー表示させる書き方はないでしょうか?

  • javaでフォーム入力の確認と文字チェック

    HPのフォームに入力してもらった後、入力された文字のチェックを行い、エラーがあった場合に「○○は半角で入力して下さい」、「○○は必須項目です」などのメッセージを出したいと思っています。 とりあえずいろいろなHPを参考に、文字制限、及びエラーメッセージを出すまでは出来たのですが、必須項目のチェックをどのように追加すればいいのかがわかりません。 最初に、入力したフォームから、フォーカスが離れた時の処理 function kanacheck() { if(document.order.kana.value.match( /[^ぁ-んァ-ン \s]+/) ) { alert("ふりがなは、「ひらがな」・「カタカナ」のみで入力して下さい。"); return 1; } return 0; } 同じ様な内容で他多数項目のチェック内容が続きます。 下は、「送信」を押したときに全体をチェックする処理です。 クリックされたときに処理を実行するようにonclick属性で呼び出しをしています。 function AllCheck() { var check = 0; check += kanacheck(); if( check > 0 ) { return false; } return check; } いずれかに「必須項目の未入力チェック」を入れたいのですが、どのようにその処理を書き足せば良いでしょうか? また、上の状態でもきちんと動作するかどうか確認はできていますが、どこかおかしな部分はありませんか? java初心者でお恥ずかしい質問ですが、どうぞよろしくお願い致します。

  • フォームのチェックについて

    今、フォームの送信ボタンを押すとチェックする 関数を作成しております。 function restChar() { if(10000 < document.F1.ご質問内容.value.length) window.alert("ご質問内容は全角5,000字以内でお願いします"); } function check(){ var flag = 0; if(document.F1.name.value == ""){ // 「お名前」の入力をチェック flag = 1; } else if(document.F1.kana.value == ""){ // 「パスワード」の入力をチェック flag = 2; } else if(document.F1.mail.value == ""){ // 「コメント」の入力をチェック flag = 3; }      else if(document.F1.ご質問内容.value == ""){ // 「コメント」の入力をチェック flag = 4; } if(flag == 1){ window.alert('お名前を入力してください'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } if(flag == 2){ window.alert('フリガナを入力してください'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } if(flag == 3){ window.alert('メールアドレスを入力してください'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 }      if(flag == 4){ window.alert('ご質問内容を入力して下さい'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } fOBJ = document.F1.mail.value; check = /.+@.+\..+/; if (!fOBJ.match(check)){ window.alert("メールアドレスが正しくありません"); return false; // 送信を中止 } fOBJ = document.F1.ご質問内容.value.length; if(10000 < fOBJ){ window.alert("ご質問内容は全角5,000字以内でお願いします"); return false; // 送信を中止 } return true; // 送信を実行 } こんな感じです。 1-4のチェックは問題ないのですが、 アドレスと文字数のチェックは、一度は ダイアログがでますが、連続で押すと通ってしまいます。 何がわるいのでしょうか?

    • ベストアンサー
    • Java