第9课:如何使用PHP来验证表单数据
主讲老师:郭盛华三个字段
name、email 和 txt属于文本输入元素。
HTML 代码是这样的:
用户名:<input type="text" name="name"> 邮件地址:<input type="text" name="email"> 留言内容:<textarea name=“txt" rows="5"></textarea>
在下面的代码中我们增加了一些新变量:$nameErr、$emailErr、$txtErr 。这些错误变量会保存被请求字段的错误消息。我们还为每个$_POST 变量添加了一个 ifelse 语句。这条语句检查 $_POST 变量是否为空(通过 PHP empty() 函数)。如果为空,则错误消息会存储于不同的错误变量中。如果不为空,则发送用户输入数据:
<?php
// 定义变量并设置为空值
$name=""; //用户名
$email=""; //电邮
$txt ="";//留言内容
if($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "用户名不能为空";
} else {
$name = $_POST["name"];
}
if (empty($_POST["email"])) {
$emailErr = "电子邮件不能为空";
} else {
$email = $_POST["email"];
}
if (empty($_POST["txt"])) {
$txt = "";
} else {
$txt = $_POST["txt"];
}
}
?>
PHP 表单安全性
什么是 $_SERVER["PHP_SELF"]变量?$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。因此,$_SERVER["PHP_SELF"]将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。什么是 htmlspecialchars() 函数?htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着< 和 >之类的 HTML 字符会被替换为< 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
关于 PHP 表单安全性的重要提示
$_SERVER["PHP_SELF"] 变量能够被黑客利用!如果您的页面使用了 PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS)。提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于 Web 应用程序。XSS 能够使攻击者向其他用户浏览的网页中输入客户端脚本。所以通过使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"]被利用。
表单的 HTML代码是这样的:<form method="post"action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">当提交此表单时,通过 method="post" 发送表单数据。
页:
[1]