「php入門~フォームのエラー処理~」の編集履歴(バックアップ)一覧に戻る

php入門~フォームのエラー処理~ - (2015/10/07 (水) 15:04:20) のソース

今回はフォームのエラー処理について勉強していきます。~
エラー処理には様々な方法がありますが、そのうちの一つの例となっています。~
実践的にエラー処理コードには&color(red){どんな事が書いてあるのか、どんな事がしたいのか}をみていきましょう。
*エラー処理コード
   //エラー処理
 $error = '';			
 if($_POST['info_date'] == '') $error .= '日付が選択されていません。<br>';
 if(!preg_match("/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}/",$info_date)) $error .= '日付が正しくありません。<br>';
 if($_POST['type'] == '') $error .= '投稿種類が選択されていません。<br>';
 if($_POST['title'] == '') $error .= 'タイトルが入力されていません。<br>';
 if(mb_strlen($_POST['title']) > 40) $error .= 'タイトルは20文字以内にしてください<br>';
 if($_POST['info_text'] == '') $error .= '内容が入力されていません。<br>';		
 if(mb_strlen($_POST['info_text']) > 2000) $error .= '内容は1000文字以内にしてください<br>';
 if($_POST['status'] == '') $error .= '状態が選択されていません。<br>';
*パッと見て・・・
まずは&color(red){一行目で関数$errorを空の状態にしていますね。}~
それ以降、&color(red){二行目からは一行毎にif文を使って条件に合わせて$errorに文字列を格納していっています。}~
.=を使って最終的には、格納していった&color(red){文字列が一つの繋がりになるようになっています。}~
*どんなフォーム??
このエラー処理が記述されているフォームはどのようなフォームなのでしょうか??~
日付、投稿種類、タイトル、本文、そして状態ですね。~
**投稿種類
投稿種類は選択式になっていてそれが空(選択されていない)だとエラーを返すようになっています。
**タイトル
こちらも空の場合は、エラーを返すます。~
それからもう一つ、タイトルに物凄く長い文字列を入れられてしまった場合もエラーを返すようになっています。~
ここで注目すべき事は、&color(red){mb_strlen($_POST['title']) > 40と書いてあるのに横では「20文字以内にしてください」と表示}させるようにプログラムが組んであります。~
これは間違いではありません。~
&color(red){mb_strlen関数は第二引数で文字コードを指定しなければ、マルチバイト文字はローマ字の数でカウントされます。}~
そこで、2倍に設定しておいたのでしょう。~
**本文
タイトルとほぼ同じ仕組みで作られています。~
**ステータス
こちらは、投稿種類と同じ仕組みです。~
**日付
日付に関しては正規表現が使われています。~
ここでは、!マーク(否定形)を用いてpreg_match関数を使用しています。~
0から9までの数字を4回繰り返し(西暦)、その次に二回ずつ(月、日)数値を繰り返えされていなければエラーと返すようになっています。~
nicepaper内でも解説されているのでそちらをご覧ください。~
[[PHPで正規表現入門1]]~
~
以上