PHP フォーム検証 - 必須フィールド

このセクションでは、必須の入力フィールドを作成し、必要に応じて使用するエラーメッセージを作成する方法を説明します。

PHP - 入力フィールド

前節の検証規則から、「名前」、「メール」、「性別」フィールドが必須であることが分かります。これらのフィールドは空であってはならず、HTMLフォームに記入する必要があります。

フィールド 検証規則
名前 必須です。アルファベットとスペースを含める必要があります。
メール 必須です。有効なメールアドレス(@と.を含む)を含める必要があります。
ウェブサイト オプションです。もし記入する場合、有効なURLを含める必要があります。
コメント オプションです。複数行の入力フィールド(テキストボックス)。
性別 必須です。選択する必要があります。

前節では、すべての入力フィールドがオプションのものです。

以下のコードでは、新しい変数を追加しました:$nameErr、$emailErr、$genderErr、および$websiteErr。これらのエラーデータは、リクエストされたフィールドのエラーメッセージを保存します。また、各$_POST変数にif else文を追加しました。この文はPHP empty()関数を使用して$_POST変数が空かどうかをチェックし、空であれば異なるエラーデータにエラーメッセージを保存し、空でなければtest_input()関数を使用してユーザー入力データを送信します:

<?php}}
// 変数の定義と空値の設定
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "名前が必要です";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "メールが必要です";
  } else {
    $email = test_input($_POST["email"]);
  }
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "性別が必要です";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - エラーメッセージの表示

HTML フォームで、各必要なフィールドの後ろにスクリプトを追加しています。必要に応じて、適切なエラーメッセージを生成します(ユーザーが必須フィールドを入力せずにフォームを送信しようとするとき):

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
ウェブサイト:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>コメント: <textarea name="comment" rows="5" cols="40"></textarea></label>
<br><br>
性別:
<input type="radio" name="gender" value="female">女性
<input type="radio" name="gender" value="male">男性
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>

実行例

次に、入力データのバリデーションを実行します。つまり、「Name フィールドはアルファベットとスペースのみを含んでいますか?」および「E-mail フィールドは有効なメールアドレスの構文を含んでいますか?」そして、Website フィールドが入力された場合、「このフィールドは有効な URL を含んでいますか?」