设为首页收藏本站 隐藏访客:

零基础学网络技术 - 东方联盟VIP会员专区

 找回密码
 立即注册
查看: 43609|回复: 0

第9课:如何使用PHP来验证表单数据

[复制链接]

187

主题

187

帖子

0

积分

管理员

东方联盟金牌讲师

Rank: 9Rank: 9Rank: 9

积分
0
发表于 2019-9-25 12:52:04 | 显示全部楼层 |阅读模式
主讲老师:郭盛华

三个字段

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() 函数)。如果为空,则错误消息会存储于不同的错误变量中。如果不为空,则发送用户输入数据:

  1. <?php
  2. // 定义变量并设置为空值
  3. $name=""; //用户名
  4. $email=""; //电邮
  5. $txt ="";//留言内容
  6. if($_SERVER["REQUEST_METHOD"] == "POST") {
  7. if (empty($_POST["name"])) {
  8.     $nameErr = "用户名不能为空";
  9. } else {
  10.    $name = $_POST["name"];
  11. }
  12. if (empty($_POST["email"])) {
  13.    $emailErr = "电子邮件不能为空";
  14. } else {
  15.    $email = $_POST["email"];
  16. }
  17. if (empty($_POST["txt"])) {
  18.    $txt = "";
  19. } else {
  20.    $txt = $_POST["txt"];
  21. }
  22. }

  23. ?>
复制代码


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" 发送表单数据。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
加入东方联盟,成为我们VIP会员,即可免费学习所有视频课程,课程是由郭盛华亲自录制演讲的!【查看会员套餐】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|东方联盟网 ( 粤ICP备19097316号 )

GMT+8, 2024-4-24 08:44 , Processed in 0.052342 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表