この章では、入力フィールドを必須にする方法と、必要に応じてエラーメッセージを作成する方法を説明します。
前ページの検証規則の表をみると、"Name"、"E-mail"、"Gender" フィールドが必須であることがわかります。 このフィールドは空にすることはできないので、HTMLフォームに入力しなければなりません。
フィールド | 検証の規定 |
---|---|
名前 | 必須。+ 文字と空白のみを含まなければならない |
必須。+ 妥当なメールアドレス(@ と .)を含まなければならない | |
Website | 任意。存在する場合は、妥当な URL を含まなければならない |
Comment | 任意。複数行入力フィールド(テキストエリア) |
Gender | 必須。1つを選択しなければならない |
前の章では、すべての入力フィールドが任意でした。
次のコードで、$nameErr、$emailErr、$genderErr、$websiteErr という新しい変数を追加します。 これらのエラー変数には、必須フィールドのエラーメッセージを格納します。$_POST変数ごとに if else 文も追加しました。 これは、$_POST変数が空であるかどうかを(PHPのempty()関数を使用して)チェックします。 空の場合は、エラー・メッセージをそれぞれのエラー変数に格納し、空でない場合は、test_input() 関数を通してユーザ入力データを変数に格納します:
<?php
// define variables and set to empty values
$nameErr = $emailErr
= $genderErr = $websiteErr = "";
$name = $email = $gender = $comment =
$website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["email"]))
{
$emailErr = "Email is required";
} 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 = "Gender is required";
} else
{
$gender = test_input($_POST["gender"]);
}
}
?>
次に、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>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
例の実行 »
次のステップでは、「Nameフィールドには文字と空白のみが含まれていますか?」とか 「E-mailフィールドには正しい構文のメールアドレスが含まれていますか?」や「Websiteフィールドに正しいURLが含まれていますか?」 といった入力データの検証を行います。