论$_POST、$_GET与$_REQUEST的区别

PHP 2013年06月22日 , ,

有$_REQUEST还需要$_GET与$_POST吗

看书看到$_POST、$_GET与$_REQUEST,有如下解释:

PHP脚本访问表单数据的方式采用检索$_POST、$_GET或$_REQUEST数组之一。$_GET或$_POST数组之一都可以保存表单数据的细节。使用哪一个数组取决于提交表单时使用的方法是POST还是GET。此外,通过POST或GET方法及其组合方式提交的所有数据都可以通过$_REQUEST数组获得。

不禁有一个疑问,既然$_REQUEST数组可以获得$_GET与$_POST数组中的数据,那还要这两种访问表单数据的方式做什么?带着这样的疑问查找未果。最后还是得查看PHP手册,点击直接查看结论

总结如下:

  1. $_POST
    1. $_POST变量用于收集来自method="post"的表单中的值。
    2. post是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户看不到这个过程。
    3. URL不能添加为书签直接访问。
    4. 安全性较高。
    5. 数据量比$_GET方式要大,具体与服务器端设置相关。
  2. $_GET
    1. $_GET变量用于收集来自method=”get”的表单中的值。
    2. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
    3. URL可以添加到书签直接进行访问。
    4. 安全性非常低。
    5. 传送数据量不能超过2KB。
  3. $_REQUEST
    1. PHP中$_REQUEST变量可以收集$_GET与$_POST以及$_COOKIE中的变量内容。
    2. 使用$_REQUEST方式来获得post和get方式传递的变量一般要比$_POST和$_GET方式慢一些。
    3. $_REQUEST方式获得的变量可能不安全,因为$_REQUEST变量数组中的数据可能被优先级更高的数据替换。

    在PHP的配置文件(php.ini)里有如下的设置:

    ; This directive describes the order in which PHP registers GET, POST, Cookie,
    ; Environment and Built-in variables (G, P, C, E & S respectively, often
    ; referred to as EGPCS or GPC). Registration is done from left to right, newer
    ; values override older values.
    variables_order = "EGPCS"
    

    这个EGPCS就是说明用$_REQUEST数组获取内容的优先级,其字母的含义分别代表为:E代表$_ENV,G代表$_GET,P代表$_POST,C代表$_COOKIE,S代表$_SESSION。后面出现的数据会覆盖前面写入的数据,其默认的数据写入方式就是EGPCS,所以POST包含的数据将覆盖GET中使用相同关键字的数据。

本文地址:http://furzoom.com/php-post-get-request/

结论

能够明确表单提交方式情况下,使用$_GET或者$_POST进行表单数据的提取。

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
日志标题:《论$_POST、$_GET与$_REQUEST的区别》
日志链接:http://furzoom.com/php-post-get-request/
博客名称:枫竹梦

发表评论

插入图片

NOTICE1:请申请gravatar头像,没有头像的评论可能不会被回复!

回到顶部