• ベストアンサー

cgi の入力チェック

***** HTML ***** <TD> <INPUT type="radio" name="ABC_*" value="登録する">登録する  <INPUT type="radio" name="ABC_*" value="登録しない">登録しない </TD> ***** CGI ***** $family = "ABC"; if($name eq "$family"){ $family=$value; } 現在、上記のような記述で作っているのですが、 チェックを入れても、入れなくても、「入力エラー」 になりません。 他の項目については、OKなんですが。。。 どのように、入力チェックをすればいいのですか? **ちなみに、OKな項目の記述です。** ***** HTML ***** <TD>登録カテゴリー:</TD> <TD> <select name="カテゴリー_*"> <option value="" selected>選  択 <option value="自動車関連">自動車関連 <option value="お役立ちサイト">お役立ちサイト <option value="HP作成支援">HP作成支援 <option value="お店のHP">お店のHP <option value="個人のHP">個人のHP <option value="その他">その他 </select></TD> ***** CGI ***** $catego = "カテゴリー"; if($name eq "$catego"){ $catego=$value; }

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

No.1 補足のスクリプトをみましたが・・どこかのフリースクリプトの改造なんでしょうか? トリッキーというか、定石を無視しているというか・・ 本題ですが、ラジオボタンやチェックボックスは、チェックが付いていないとその情報が全く送信されません。 例えば、   <INPUT type="checkbox" name="a" value="1"> というチェックボックス(ラジオボタンでも同様)があったとして、チェックがついている場合は「a=1」が送信されますが、チェックされない場合「a=」という“フォームが存在する”という情報さえも送信されないのです。 このスクリプトは送信された内容をだけを見て、name に「_*」が付加されている場合のみ必須チェックを行っているので、チェックされていないチェックボックスやラジオボタンの必須チェックができないのです。 単にラジオボタンを入力必須にしておきたいなら、HTMLでどちらかのラジオボタンに checked をつけておけば大丈夫です。 (その時点で、必須チェックにする必要もなくなりますが。) もし不正なフォームからの送信に対して必須チェックを行う場合、このスクリプトでは対処できません。 根本からの見直しが必要となります。

その他の回答 (1)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

どのようなチェック処理を行っているのでしょうか。 >$family = "ABC"; >if($name eq "$family"){ $family=$value; } $name,$valueは何ですか? HTMLからCGIへどのように値を受け渡しているのでしょうか? エラーをだす処理も書いていませんよね。 それも教えてください。 これだとただ値を比較して同じ場合に値を変数に入れるだけの処理です。

Hiro-PaPa
質問者

補足

どこを書き出せばいいのかわからなかったので、 下記にUPしてみました。 htmlの記述 http://www.ae.wakwak.com/~doup/html.htm cgiの記述 http://www.ae.wakwak.com/~doup/cgi.htm フリーcgiの改造なんです。 UPした方法で使用すると、「登録する」「登録しない」の どちらも選ばなくても、入力エラーとして認識されません。 自分でも、いろいろといじってみたのですが、 どちらかを選ぶと入力エラーがでてしまい、 その逆を設定することができませんでした。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう