« Smartyスクリプト使用上の注意点 | ホーム | メディア技術基礎(ネットワーク・画像処理) 第1回課題 »
2011年6月12日
PHPを用いた入力データのエラーチェック処理
お問い合わせページなどで、再三行ってきた入力されたデータに対するエラー処理についてメモします。
先日AJAXを勉強したこともあって、現在は、非同期通信でのお問い合わせフォームをそそくさと作っている所です。
phpでのエラーチェックについてこれまで自分が用いてきたものとは違う方法を、書籍で見つけたのでまとめていきたいと思います。
複数の項目のエラーをまとめて返せるように、以下のように、配列変数をはじめにセットし、初期化します。
まずisset関数を用いて、$check_data["name"]変数があるかを調べ、
かつtrim関数を用いた空白文字の削除後に、名前が空っぽになっていないかを調べています。
さらに、mb_strlen関数で、きちんとマルチバイト文字の文字数をカウントして、許容量以上の文字数でないかを調べています。
はじめにisset関数を変数の存在を確認するのは、定義されていない変数を判定に掛けるとNOTICEエラーが生じてしまうからだそうです。(いまいち理解できていない・・・汗)
先日AJAXを勉強したこともあって、現在は、非同期通信でのお問い合わせフォームをそそくさと作っている所です。
phpでのエラーチェックについてこれまで自分が用いてきたものとは違う方法を、書籍で見つけたのでまとめていきたいと思います。
エラー内容はまとめて配列変数に格納する
ここでは、$error_listという変数を用います。複数の項目のエラーをまとめて返せるように、以下のように、配列変数をはじめにセットし、初期化します。
$error_list = array();各項目でエラーがあった場合は、その判定ごとにスクリプトを生成し、この配列に入れていくこととします。
submitボタン後の処理
submitボタンが押されたことを確認したら、実行するスクリプトは以下のようになります。if (isset($_POST["submit"])){ $_SESSION["name"] = isset($_POST["name"]) ? $_POST["name"] : " "; $_SESSION["age"] = isset($_POST["age"]) ? $_POST["age"] : " "; $_SESSION["comment"] = isset($_POST["comment"]) ? $_POST["comment"] : " "; //他で定義したerror_check()関数を実行する。 //引数は、上記の$_SESSION配列変数 $error_list = error_check($_SESSION); }
error_check()関数
上記で登場したerror_check()関数は、実際には別のphpファイルに書いて、require_onceで読み込みます。function error_check($check_data){ $error_list = array(); if (isset($check_data["name"]) && trim($check_data["name"]) === ""){ $error_list[] = "名前を入力してください。"; }elseif (mb_strlen($check_data["name"]) > 100){ $error_list[] = "名前は100文字以内で入力してください。"; } return $error_list; }入力された名前のエラーの有無を調べる上のスクリプトでは、若干複雑な条件分岐を作っています。
まずisset関数を用いて、$check_data["name"]変数があるかを調べ、
かつtrim関数を用いた空白文字の削除後に、名前が空っぽになっていないかを調べています。
さらに、mb_strlen関数で、きちんとマルチバイト文字の文字数をカウントして、許容量以上の文字数でないかを調べています。
はじめにisset関数を変数の存在を確認するのは、定義されていない変数を判定に掛けるとNOTICEエラーが生じてしまうからだそうです。(いまいち理解できていない・・・汗)