获取表单数据的方法

摘要

在网页开发过程中,表单提交是数据传输过程中很重要的一部分,做为以PHP为后台开发语言的项目,数据接收也是相当重要的一环。因此,便引出了今天的三位主角,它们分别是$_GET、$_POST、$_REQUEST。对于前两者而主,相信很多PHP开发者都经常使用,但是仍有很多开发者不是特别清楚这三者之间的关系。今天,笔者就细说一下这三者之间的区别。

在网页开发过程中,表单提交是数据传输过程中很重要的一部分,做为以PHP为后台开发语言的项目,数据接收也是相当重要的一环。因此,便引出了今天的三位主角,它们分别是$_GET$_POST$_REQUEST。对于前两者而主,相信很多PHP开发者都经常使用,但是仍有很多开发者不是特别清楚这三者之间的关系。今天,笔者就细说一下这三者之间的区别。

说明:在HTTP协议下,输入输出的原型其实是HTTP请求与响应,客户端向服务器端发送的数据称之为请求,反之称为响应。虽然HTTP/1.1定义了八种请求方法(OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT),但真正常用的却只有在HTTP/0.9种就已经存在的两种方法——GET和POST。GET和POST都允许发送自定义数据给服务器端,因此,可以通过接收这两种方法的请求数据实现输入。

一、$_GET

GET请求是HTTP中最原始的方式,在网页中点击一个没有经过人为干预过的a链接或在地址栏中输入一个url并回车都会发送一个GET请求。换句话说,GET请求是通过URL进行操作的。正因如此,注定了其具有先天性的优点和缺点。

GET请求的优点就是简单、明了,缺点便是易被劫持、长度受限。

在PHP中,GET被封装到了$_GET变量中。因此,我们想要获取某个参数值需要通过$_GET['name']的方式获取。

有时候,我们并不能确定客户端提交了哪些数据过来,但我们还要实现数据的获取。针对这种情况,我们可以借助PHP中的foreach语句来实现。如下:

  1. <?php
  2. foreach ($_GET as $key => $value) {
  3.     echo $key . '=>' . $_GET[$key];
  4. }
  5. ?>

二、$_POST

由于GET有易被劫持和长度受限的缺陷,POST便应运而生了。不同于GET请求,POST是通过header进行传递的。因此,它在长度上是不受限制的。因此多数时候被用来提交一些比较敏感的信息或信息量巨大的数据。

通常来说,对于表单数据如无特别需求都建议使用POST方法来提交。

让人意外的是,在POST方法中同样可以传递GET变量,也就意味着GET数据和POST方法可以并存,比如通过POST提交数据到demo.php,我们可以写成demo.php?id=123。这样,数据提交时便携带了固定的GET信息。要想使用这种方法,我们建议固定的数据使用GET方法添加到链接后面,由用户输入的数据使用POST方法来提交。

在PHP中,POST同GET一样也被封装了。因此,我们想要获取某个参数值需要通过$_POST['name']的方式获取。

三、$_REQUEST

有时,我们无法确定前端是通过GET还是POST发送数据的,这时对于我们来说,有一个既可接收GET又可接收POST的工具是最合适不过的。也正是基于这点,PHP中封装了一个名为$_REQUEST的变量。通过这个变量,我们便能获取到我们想要的信息。使用方法同$_GET和$_POST。

特别说明:因为$_REQUEST兼具$_GET和$_POST两者的功能,所以在一定程度上要慢于后两者。因此,建议在开发的过程当中最好前后台达成统一,这样既方便了开发,也提高了响应速度。

shaw

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: