PHP 表单必填字段
1. PHP 必填字段概述
在本章节中,我们将学习如何将表单输入字段设为必填项,并根据需要创建相应的错误提示信息。
根据前一章定义的验证规则,我们知道“姓名”、“电子邮件”和“性别”字段是必填的。这意味着这些字段不能为空,且必须在 HTML 表单提交前完成填写。
以下是相关字段的验证要求汇总:
| 字段 | 验证规则 |
|---|---|
| 姓名 (Name) | 必填。且必须仅包含字母和空格。 |
| 邮件 (E-mail) | 必填。且必须包含有效的电子邮件地址格式。 |
| 网址 (Website) | 可选。如果填写,则必须符合有效的 URL 格式。 |
| 备注 (Comment) | 可选。属于多行输入字段。 |
| 性别 (Gender) | 必填。必须选择其中一项。 |
2. 定义错误变量与处理逻辑
在之前的示例中,所有字段都是可选的。为了实现必填验证,我们需要引入一组新的错误变量:$nameErr、$emailErr、$genderErr 和 $websiteErr。
这些变量将存储针对必填字段的报错信息。同时,我们为每个 $_POST 变量添加了 if else 逻辑判断。
2.1 使用 empty() 函数进行校验
我们使用 PHP 内置的 empty() 函数来检查提交的数据是否为空。如果字段为空,则将错误消息存入对应的错误变量中;如果不为空,则将数据传递给之前定义的 test_input() 函数进行数据清洗。
以下是核心逻辑实现代码:
// 定义变量并初始化为空值
$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"]);
}
}3. 在 HTML 表单中显示错误消息
在完成逻辑校验后,我们需要在 HTML 表单的每个必填字段后添加一段简单的脚本。这段脚本会在用户尝试提交未填写完整信息的表单时,动态生成并显示正确的错误提示。
3.1 表单前端集成示例
通过在输入框旁边嵌入 PHP 的 echo 语句,我们可以实时反馈验证状态:
<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">男性
<input type="radio" name="gender" value="other">其他
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="提交">
</form>在接下来的步骤中,我们将进一步学习如何验证输入数据的具体格式,例如“姓名是否仅包含字母”或“电子邮件是否符合标准语法”等深入规则。