php中$_request与$_post、$_get的区别

php中有$_REQUEST与$_POST、$_GET用于接受表单数据,当时他们有何种区别,什么时候用那种最好。

一、$_REQUEST与$_POST、$_GET的区别和特点

$_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。通过POST和GET方法提交的所有数据都可以通过$_REQUEST数组获得

二、$_POST、$_GET的区别和特点

   1. GET是从服务器上获取数据,POST是向服务器传送数据。
   2. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
   3. 对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。
   4. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
   5. GET安全性非常低,POST安全性较高。

举例:mypage?id=1这种就是GET方式传值,可以用$_REQUEST和$_GET接受传值

 

 

-----------------------------------------------------------------------------------------------------------------------------------

HTTP GET 变量:$_GET
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_GET_VARS
通过 HTTP GET 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_GET; 来访问它,就如同使用 $HTTP_GET_VARS 一样。
$HTTP_GET_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_GET_VARS 和 $_GET 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_GET 和 $HTTP_GET_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。



HTTP POST 变量:$_POST
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_POST_VARS
通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_POST; 来访问它,就如同使用 $HTTP_POST_VARS 一样。
$HTTP_POST_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_POST_VARS 和 $_POST 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_POST 和 $HTTP_POST_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量

实际应用:当表单很多时,可能用数组的形式来把值传递过来,再配合一些类来进行操作

查看情况:print_r($_POST);



1、$_GET 变量


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

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

$_GET 变量的安全性不如$_POST 。


实例
  1. <span style="font-size:18px;"><form action="welcome.php" method="get">  
  2. Name: <input type="text" name="fname">  
  3. Age: <input type="text" name="age">  
  4. <input type="submit">  
  5. </form></span>  

当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示:
http://www.w3cschool.cc/welcome.php?fname=Peter&age=37
"welcome.php" 文件现在可以通过 $_GET 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_GET 数组中的键):

  1. <span style="font-size:18px;">Welcome <?php echo $_GET["fname"]; ?>.<br>  
  2. You are <?php echo $_GET["age"]; ?> years old!</span>  

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

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

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

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

2、$_POST 变量


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

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

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

实例

  1. <span style="font-size:18px;"><form action="welcome.php" method="post">  
  2. Name: <input type="text" name="fname">  
  3. Age: <input type="text" name="age">  
  4. <input type="submit">  
  5. </form></span>  

当用户点击 "Submit" 按钮时,URL 如下所示:

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

  1. <span style="font-size:18px;">Welcome <?php echo $_POST["fname"]; ?>!<br>  
  2. You are <?php echo $_POST["age"]; ?> years old.</span>  

何时使用 method="post"?
从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。

然而,由于变量不显示在 URL 中,所以无法把页面加入书签。

主要区别如下:
① 安全性 post>get
② 数据传输大小 [浏览器]post>get
③ 保存到收藏夹 get比较方便.

3、PHP $_REQUEST 变量


预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。

$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。

$_REQUEST 变量既可以收集GET方法发送的数据,也可以接受POST方法接受的数据。


实例

  1. <span style="font-size:18px;">Welcome <?php echo $_REQUEST["fname"]; ?>!<br>  
  2. You are <?php echo $_REQUEST["age"]; ?> years old.</span>  

注意事项:

1.  不要经常使用$_REQUEST,

2.  如果不确定_GET/POST

你接收数据时候,可以这样

  1. if($_SERVER['REQUEST_METHOD’]=="POST"){  
  2.     $echo $_POST['名字'];  
  3. }else if($_SERVER[’ REQUEST_METHOD’]=="GET"){  
  4.     //用 _GET接收.  


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_青涩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值