博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第9课:郭盛华课程如何使用PHP来验证表单数据
阅读量:3924 次
发布时间:2019-05-23

本文共 1415 字,大约阅读时间需要 4 分钟。

主讲老师:郭盛华

 

三个字段

 

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.  
  24. ?>
复制代码

 

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

 

具体请看视频课程:@郭盛华老师

转载地址:http://hnugn.baihongyu.com/

你可能感兴趣的文章
剑指 Offer 68 - II. 二叉树的最近公共祖先
查看>>
剑指 Offer 18. 删除链表的节点
查看>>
剑指 Offer 32 - II. 从上到下打印二叉树 II
查看>>
杭电oj-2011 多项式求和 C++
查看>>
杭电oj-2014 青年歌手大奖赛_评委会打分 C++
查看>>
杭电oj-2015 偶数求和 C++
查看>>
杭电oj-2016 数据的交换输出 C++
查看>>
杭电oj-2017 字符串统计 C++
查看>>
杭电oj-2018 母牛的故事 C++
查看>>
Educational Codeforces Round 87 (Rated for Div. 2)----题目+题解(A、B)
查看>>
Codeforces Round #647 (Div. 2) - Thanks, Algo Muse!B. Johnny and His Hobbies(异或)---题解
查看>>
使用WinINet获取网页源代码
查看>>
Ansi、Unicode、UTF-8字符串之间的转换和写入文本文件
查看>>
error C1189:#error:This file requires _WIN32_WINNT to be #defined at least to 0x0403
查看>>
CentOS yum 源的配置与使用
查看>>
error while loading shared libraries: libevent-2.0.so.5 安装好mamcache,启动服务时
查看>>
c++ web编程:写出你的CGI程序
查看>>
Linux RPM 命令参数使用详解 查看 rpm包依赖性
查看>>
xz压缩命令
查看>>
Mysql各种存储引擎对比总结(常用几种)
查看>>