PHP Form - Required Fields
In this chapter, we will introduce how to set required form fields and error messages.
PHP - Required Fields
In the previous chapter we introduced the form validation rules. We can see that the "Name", "E-mail", and "Gender" fields are required, and each field cannot be empty.
| Field | Validation Rules |
|---|---|
| Name | Required. + Can only contain letters and spaces |
| Required. + Must contain a valid email address (contains "@" and ".") | |
| URL | Optional. If present, it must contain a valid URL |
| Remarks | Optional. Multi-line field (textarea). |
| Gender | Required. Must select one. |
In the previous chapters, all input fields were optional.
In the following code we added some new variables: $nameErr, $emailErr, $genderErr, and $websiteErr. These error variables will be displayed on the required fields. We also added an if else statement for each $_POST variable. These statements will check whether the $_POST variable is empty (using PHP's empty() function). If it is empty, the corresponding error message will be displayed. If it is not empty, the data will be passed to the test_input() function:
<?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 - Display Error Messages
In the following HTML example form, we added some scripts for each field. Each script will display an error message when the entered information is incorrect. (If the user submits the form without filling in the information, an error message will be output):
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> 名字: <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> 备注: <textarea name="comment" rows="5" cols="40"></textarea> <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>Other Extensions