表单处理实战
HTML 表单 + PHP 后端处理、数据验证、XSS 防御 htmlspecialchars
表单处理实战
表单是 Web 应用最基础的交互方式。正确处理表单包括:接收数据、验证、错误提示、安全输出。
学完本章你将: 掌握 HTML 表单 + PHP 后端处理、数据验证、XSS 防御。
完整的表单处理
php
<?php
$name = $email = "";
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// 验证姓名
$name = trim($_POST["name"] ?? "");
if ($name === "") {
$errors["name"] = "姓名不能为空";
}
// 验证邮箱
$email = trim($_POST["email"] ?? "");
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors["email"] = "请输入有效邮箱";
}
// 无错误则处理
if (empty($errors)) {
// 保存到数据库或发送邮件...
$success = "注册成功!";
}
}
?>
<!-- HTML 表单 -->
<?php if (!empty($success)): ?>
<p style="color:green"><?= htmlspecialchars($success) ?></p>
<?php endif; ?>
<form method="POST" action="">
<input name="name" value="<?= htmlspecialchars($name) ?>"
placeholder="姓名">
<span style="color:red"><?= $errors["name"] ?? "" ?></span>
<input name="email" value="<?= htmlspecialchars($email) ?>"
placeholder="邮箱">
<span style="color:red"><?= $errors["email"] ?? "" ?></span>
<button type="submit">提交</button>
</form>
XSS 防御
php
<?php
// ❌ 危险——直接输出用户输入
echo $_GET['name'];
// ✅ 安全——HTML 转义
echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
// <script> 会变成 <script>——无法执行
⚠️ 铁律:任何输出到 HTML 的用户数据都必须经过
htmlspecialchars()处理。