$_POST、$_GET 和 $_REQUEST 之间有啥区别?

Posted

技术标签:

【中文标题】$_POST、$_GET 和 $_REQUEST 之间有啥区别?【英文标题】:What's the difference between $_POST, $_GET, and $_REQUEST?$_POST、$_GET 和 $_REQUEST 之间有什么区别? 【发布时间】:2017-03-22 04:04:36 【问题描述】:

我对 php 中的这些超级全局变量($_POST$_GET$_REQUEST)感到有些困惑。在 PHP 中哪些情况下需要使用这些变量,这三者代表的主要区别是什么?

【问题讨论】:

***.com/questions/3477333/… 或手册:php.net/manual/en/language.variables.superglobals.php - 总是一个很好的资源 ;-) 最好不要使用$_REQUEST 嗨@suraj 感谢您的回复,我尝试了该链接,但它不包含请求变量 这是关于 $GET 和 $POST 一般关于 http.. $_REQUEST 作为答案将包含请求值,而与请求类型无关.. 【参考方案1】:

$_POST 是使用 application/x-www-form-urlencoded 或 multipart/form-data 作为 HTTP 内容时通过 HTTP POST 方法传递给当前脚本的变量的关联数组 -输入请求。 您可以在向服务器发送大量数据或有密码、信用卡详细信息等敏感信息时使用

$_GET 是通过 URL 参数传递给当前脚本的变量关联数组。数据量少时可以使用,多用于分页,页码显示在url中,使用$_GET可以很方便的从url中获取页码

$_REQUEST 是一个“超全局”或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。它是一个关联数组,默认包含$_GET、$_POST 和$_COOKIE的内容(取决于request_order=

【讨论】:

$_COOKIE 不应该被轻描淡写。要么删除它,要么指定它适用于哪些 PHP 版本(或其他解释,无论是真的)。​​【参考方案2】:

有两种方法可以将 html 表单数据从一个页面发送到另一个页面或将 HTML 页面发送到服务器端(在 PHP 中)。

    POST

这是一种使用网络浏览器上的任何用户都不可见的数据包发送数据的方法。与 GET 方法相比,它是安全的。

    GET

这是一种通过 URL 发送数据的方法,该 URL 在任何网络浏览器的地址栏中对用户都是可见的。所以,它不像 POST 方法那样安全。

现在,共有三个超级全局变量可以在 PHP 中捕获这些数据。

    $_POST: 可以捕获使用POST方式发送的数据。 $_GET: 可以抓取GET方式发送的数据。 $_REQUEST:它可以捕获使用 POST 和 GET 方法发送的数据。

还可以使用$_GET 超全局变量从提交按钮收集 URL 中发送的数据。

【讨论】:

【参考方案3】:

区别在于:

$_GET retrieves variables from the querystring, or your URL.>

$_POST retrieves variables from a POST method, such as (generally) forms.

$_REQUEST is a merging of $_GET and $_POST where $_POST overrides $_GET.

【讨论】:

实际上$_REQUEST的行为是由request_ordervariables_order 配置指令决定的。 $_REQUEST 还包括$_COOKIE 超级全局中的值;)php.net/manual/en/reserved.variables.request.php 最后我想你在回答我的问题。如果我有一个 POST [name] 和一个 GET[name] 如果我做了一个 REQUEST [name] 它会 = POST [name] - 正确(带有request_order)?我开始认为 REQUEST 没那么有用。你什么时候用? 您能否更新您的答案以限定“$_POST 覆盖 $_GET”(正如其他 cmets 所暗示的那样)?【参考方案4】:

好吧,想了解更多,请访问GET vs. POST

1) $_GET$_POST 都创建一个数组,例如array( key => value, key2 => value2, key3 => value3, ...)。该数组包含键/值对,其中键是表单控件的名称,值是来自用户的输入数据。

2) GETPOST 都被视为 $_GET$_POST。这些是超全局变量,这意味着无论范围如何,它们始终是可访问的 - 您可以从任何函数、类或文件访问它们,而无需执行任何特殊操作。

3) $_GET 是通过 URL 参数传递给当前脚本的变量数组。

4) $_POST 是通过 HTTP POST 方法传递给当前脚本的变量数组。

---- 而$_REQUEST 包含$_POST$_GET$_COOKIE

【讨论】:

以上是关于$_POST、$_GET 和 $_REQUEST 之间有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

php中的$_REQUEST()函数怎么用

php中的$_REQUEST()函数怎么用

PHP 中TP5 Request 请求对象的实例详解

$_GET $_POST $_REQUEST

php PHP __ $ _ POST / $ _GET / $ _REQUEST

_POST,_GET,_REQUEST区分