表单验证
验证用户输入,确保安全性和正确性
表单验证 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 3 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 3 节课。
验证和保护表单输入
验证和保护表单输入
欢迎来到下一课!在本课中,您将学习如何验证和保护用户输入,以确保表单数据准确,并防范恶意攻击。让我们开始吧!

为什么要验证和保护输入?
为什么要验证和保护输入?
验证和保护表单输入对于以下方面至关重要:
- 确保数据的准确性和可用性。
- 防范结构化查询语言注入和 XSS 攻击等安全威胁。
要点:在处理或存储用户输入之前,务必对其进行验证和清理。
验证输入
验证输入
使用 PHP 的内置函数验证常见输入:
filter_var():验证电子邮箱、网址和整数。preg_match():根据正则表达式验证输入。
示例:验证电子邮箱地址:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST["email"];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid email: $email";
} else {
echo "Invalid email address.";
}
}
?>
清理输入
清理输入
清理输入以移除不需要的字符或有害代码。示例:
提示:针对不同类型的数据,使用带有适当过滤器的 filter_var()。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
echo "Sanitized Name: $name";
}
?>
防止跨站脚本攻击(XSS)
防止跨站脚本攻击(XSS)
转义特殊字符,以防止 XSS 攻击。请使用:
htmlspecialchars():将特殊字符转换为 HTML 实体。
示例:
提示:在浏览器中显示用户输入之前,务必对其进行转义。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$comment = htmlspecialchars($_POST["comment"]);
echo "Comment: $comment";
}
?>
防止结构化查询语言注入
防止结构化查询语言注入
当恶意代码被插入结构化查询语言查询语句时,就会发生结构化查询语言注入。请使用预处理语句来防止此类攻击。示例:
要点:与数据库交互时,务必使用预处理语句。
<?php
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "root", "");
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute(["username" => $_POST["username"]]);
$user = $stmt->fetch();
?>
常见验证模式
常见验证模式
以下是一些常见模式:
- 验证电话号码:
preg_match('/^\d{10}$/', $phone) - 验证密码:检查长度和复杂度。
示例:验证强密码:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$password = $_POST["password"];
if (strlen($password) >= 8 && preg_match('/[A-Z]/', $password)) {
echo "Strong password!";
} else {
echo "Password must be at least 8 characters long and include an uppercase letter.";
}
}
?>
保护文件上传
保护文件上传
对于处理文件上传的表单:
- 检查文件类型和大小。
- 将文件存储在网站根目录之外的安全目录中。
示例:
<?php
if ($_FILES["file"]["size"] < 500000 && in_array($_FILES["file"]["type"], ["image/jpeg", "image/png"])) {
move_uploaded_file($_FILES["file"]["tmp_name"], "/secure/location/" . $_FILES["file"]["name"]);
echo "File uploaded successfully!";
} else {
echo "Invalid file.";
}
?>
做得很好!
做得很好!
恭喜您!您已经学会了如何验证和保护表单输入,从而确保网页应用安全可靠。在下一课中,我们将学习如何在 PHP 中处理文件上传。让我们继续编写代码吧!

常见问题解答
「表单验证」课时是免费的吗?
是的 — 「表单验证」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 3 节课。
「表单验证」这节课中我会学到什么?
验证用户输入,确保安全性和正确性 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 PHP Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 3 节。
「表单验证」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 PHP Academy 课中编写并运行代码吗?
能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。