• PHP 表单处理

PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。

  • $_GET 是通过 URL 参数传递到当前脚本的变量数组。
  • $_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。

  • $_GET 变量

预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。

从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。

例:form.html 文件代码

<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body><form action="welcome.php" method="get">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form></body>
</html>

当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示: http://www.runoob.com/welcome.php?fname=Runoob&amp;age=3

"welcome.php" 文件现在可以通过 $_GET 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_GET 数组中的键):

欢迎 <?php echo $_GET["fname"]; ?>!<br>
你的年龄是 <?php echo $_GET["age"]; ?>  岁。
  • 何时使用 method="get"?

    在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。

    注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!不安全

    然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

    注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

  • $_POST 变量

预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。

从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。

注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。

例:form.html 文件代码

<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body><form action="welcome.php" method="post">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form></body>
</html>

当用户点击 "提交" 按钮时,URL 类似如下所示: http://www.runoob.com/welcome.php

"welcome.php" 文件现在可以通过 $_POST 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_POST 数组中的键):

欢迎 <?php echo $_POST["fname"]; ?>!<br>
你的年龄是 <?php echo $_POST["age"]; ?>  岁。
  • 何时使用 POST?

通过 POST 方法从表单发送的信息对其他人是不可见的(安全)(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。

此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。

不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。

大多数开发者偏爱 POST 来发送表单数据。

  • 通过 PHP 验证表单数据

我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。

在我们使用 htmlspecialchars() 函数后,如果用户试图在文本字段中提交以下内容:

<script>location.href('http://www.hacked.com')</script>

- 代码不会执行,因为会被保存为转义代码,就像这样:

&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

现在这条代码显示在页面上或 e-mail 中是安全的。

在用户提交该表单时,我们还要做两件事:

  1. (通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
  2. (通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠(\)

接下来我们创建一个检查函数(相比一遍遍地写代码,这样效率更好)。

我们把函数命名为 test_input()。

现在,我们能够通过 test_input() 函数检查每个 $_POST 变量,脚本是这样的:

  • <?php
    // 定义变量并设置为空值
    $name = $email = $gender = $comment = $website = "";if ($_SERVER["REQUEST_METHOD"] == "POST") {$name = test_input($_POST["name"]);$email = test_input($_POST["email"]);$website = test_input($_POST["website"]);$comment = test_input($_POST["comment"]);$gender = test_input($_POST["gender"]);
    }function test_input($data) {$data = trim($data);$data = stripslashes($data);$data = htmlspecialchars($data);return $data;
    }
    ?>

PHP表单(get,post)提交方式相关推荐

  1. form表单的多种提交方式

    在项目开发中自己总结的form表单的集中提交方式: 1,<input type="submit"> 提交按钮提交表单. 例: <!DOCTYPE html> ...

  2. form表单的多种提交方式及提交前验证

    以下是本人总结处来的一些form的提交方式,网上还有别的提交方式,这里我总结了大小分为7类,其实就是三类的提交方式,若有哪里不对的,还请评论指出来,大家一起学习学习 1.无任何验证提交(最普通的提交) ...

  3. 表单的默认提交方式_对于PHP表单提交有哪集中方式讲解

    PHP 做网页后端还是很优秀的,PHP 表单提交,不外乎两种方法,即 GET 和 POST 方法:PHP后台使用全局变量$_POST;$_GET;来获取提交数据. 代码: <!DOCTYPE H ...

  4. form表单—2种提交方式

    只提交参数到后台,不接收返回值 html代码 <!--第1步:设置 action,method--> <form id="editForm" action=&qu ...

  5. form表单的各种提交方式

    form表单提交方法很多.直接提交啊,或者js提交啊. 第一种提交方式:form表单直接提交 <form action="formDate" method="pos ...

  6. Form表单之get提交与post提交

                                     Form表单之get提交与post提交 Form表单的属性action 与method:   属性           值      ...

  7. 使用frisby 进行post的表单信息的提交,以及nginx缓存的命中

    相关名称 post form ,$request_uri  nginx-cache frisby测试,在客户端,进行post方式提交表单数据,客户端的nginx缓存信息无效 客户端也有nginx服务 ...

  8. 网络——提交表单数据(post方式)

    [0]README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 网络--提交表单数据 的基础知识 : 2) for source code, please visit ...

  9. form表单用butten提交后无反应表单提交三种方式

    form表单用butten提交后无反应&表单提交三种方式 一,表单提交无反应 有时候,我们发现表单提交的butten按钮,根本就没niao用.鼠标都点烂了,也提交不上去.找了半天什么错误也没找 ...

  10. 提交表单时,post方式无法提交(一种情况)

    tomcat6,设置文件上传不限制大小maxPostSize="0" 但是在tomcat7及以后版本,应设置为小于0,如maxPostSize="-1"  否则 ...

最新文章

  1. 记录一个比较完整的python项目分析架构
  2. JSONP跨域jQuery处理整理(附天气数据实例)
  3. QQ提示应用程序并行配置不正确,绿色版QQ不能运行解决方法
  4. 树莓派无法安装mariadb_RaspberryPi(树莓派)如何安装 MariaDB / MySQL 数据库
  5. 7.10 枚举——最大公约数和最小公倍数问题
  6. kong安装配置手册
  7. 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用
  8. cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频
  9. 《计算机网络》第四章:介质访问控制(The Medium Access Control Sublayer)
  10. HDU2023 求平均成绩【入门】
  11. 系统同传软件_影视翻译软件可实时在线翻译多国语言
  12. 爬取千库网ppt_Python——如何实现千图成像:初级篇(从图片爬取到图片合成)...
  13. 软件工程之软件设计③(概要设计说明书,详细设计说明书)
  14. 利用selenium实现中国裁判文书网自动登录批量下载功能
  15. 英语单词发音中/s/后的/p/,/t/,/k//tr/什么时候读作/b/,/d/,/g/,/dr/?
  16. 空间直角坐标转大地坐标 matlab实现
  17. 怎么把计算机里面的解压到桌面上,电脑桌面怎么加压文件
  18. Spring都没弄明白凭什么拿高薪,Android研发岗面试复盘总
  19. 【linux】can‘t set line discipline
  20. Arrays.copyOf();方法的用法

热门文章

  1. PHP概论(有实用干货)
  2. 树莓配装ubuntu
  3. SDK接口调用主流程
  4. 10大行业大数据应用痛点及解决策略
  5. 大物实验计算弹性模量_大学物理设计性实验用拉伸法测定金属丝的杨氏弹性模量...
  6. 华为工程师,带你实战C++(2016版)-王桂林-专题视频课程
  7. python实验原理_【python】《统计学原理实验教程(Python)》书中代码实现
  8. python 12306登录 2019_python爬虫--模拟12306登录
  9. linux+字符串+补零,Linux之基本文本处理工具(一)
  10. Vim(vi)使用整理,对比式记忆