「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倍に設定しておいたのでしょう。~ **本文 タイトルとほぼ同じ仕組みで作られています。~ **ステータス こちらは、投稿種類と同じ仕組みです。~ **日付 日付に関しては正規表現が使われています。~ nicepaper内でも師匠が解説されているのでそちらをご覧ください。~ 自分でも近日中にアップしてみます。~ [[PHPで正規表現入門1]]~ ~ 以上
今回はフォームのエラー処理について勉強していきます。~ エラー処理には様々な方法がありますが、そのうちの一つの例となっています。~ 実践的にエラー処理コードには&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]]~ ~ 以上

表示オプション

横に並べて表示:
変化行の前後のみ表示: