- ベストアンサー
PHP入力チェック方法
- PHPを使用してドロップダウンリストで選択された値の入力チェックを行う方法についての質問です。
- 現在、preg_matchなどを使用して試行錯誤していますが、うまく動作しない問題に直面しています。
- 下記のサイトでホームページの改ざんを防止するための入力チェックに興味を持ち、ドロップダウンリストを使用したチェック方法を知りたいと思っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
別に想定したデータのチェック自体はする必要はないですが、 どうしてもというならこんな感じでホワイトリストをつくり マッチしない場合エラーにすればよいのでは? <?php $errmsg=""; $whitelist["menu"]=Array("未選択","東京","千葉","埼玉","群馬","海外"); if(isset($_REQUEST["menu"])){ if(!in_array($_REQUEST["menu"],$whitelist["menu"])) $errmsg="NG!!"; $selected["menu"][$_REQUEST["menu"]]=" selected='selected'"; } if($errmsg) print $errmsg; else echo <<<eof <form> <p> お問い合わせ内容のカテゴリ<br> <select name="menu" id="menu"> <option value="未選択"{$selected["menu"]["未選択"]}>▼選択して下さい</option> <option value="東京"{$selected["menu"]["東京"]}>東京 - Tokyo</option> <option value="千葉"{$selected["menu"]["千葉"]}>東京 - Chiba</option> <option value="埼玉"{$selected["menu"]["埼玉"]}>埼玉 - Saitama</option> <option value="群馬"{$selected["menu"]["群馬"]}>群馬 - Gunma</option> <option value="海外"{$selected["menu"]["海外"]}>海外 - Kaigai</option> </select><br> <input type="submit" value="go"> </p> </form> eof; ?>
その他の回答 (1)
- 1minn
- ベストアンサー率57% (52/90)
デバッグしてみました? MenuValue関数に渡された値を画面出力でもしてみれば、答えは出そうですが。 function MenuValue($v,$r) { echo 'r => '. $r .'<br>'; echo 'post[menu] => '. $_POST['menu'] .'<br>'; ・ $vは固定なので引数にする必要もなさそう。 ・ 一致しなかった時のreturn値を定義しないのがちょっと気持ち悪い。 のは気にはなりますが、普通に動きそうにみえます。 でも動かないのは・・・ ・文字コードが一致してない ・POST先が違ってる ・menuって名前が重複してる とか、そんな感じでしょうか?
お礼
ご回答頂き有難う御座います。 取り敢えずこのソースで問題なく動作してるのですが・・・ アドバイス頂いた箇所、再度見直してみますネ!?
お礼
有難うございました。 おかげで何とか解決できました。 for文で何とかしようとあれこれ試行錯誤して 何とかなったのですが、こちらの方がスッキリしてるので 使わせて頂きました。 また何かありましたら宜しくお願い致します。