在$ _REQUEST,$ _GET和$ _POST中哪一个最快?

kob*_*bra 173 php

哪些代码会更快?

$temp = $_REQUEST['s'];
Run Code Online (Sandbox Code Playgroud)

要么

if (isset($_GET['s'])) {
  $temp = $_GET['s'];
}
else {
  $temp = $_POST['s'];
}
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 266

$_REQUEST默认情况下,包含的内容$_GET,$_POST$_COOKIE.

但它只是一个默认值,取决于variables_order; 并且不确定您是否想要使用cookie.

如果我必须选择,我可能不会使用$_REQUEST,我会选择$_GET$_POST- 取决于我的应用程序应该做什么 (即一个或另一个,但不是两个):一般来说:

  • $_GET当有人您的应用程序请求数据时,您应该使用.
  • $_POST当有人您的应用程序推送(插入或更新或删除)数据时,您应该使用它.

无论哪种方式,性能都没有太大区别:与其他脚本相比,差异可以忽略不计.

  • 使用$ _REQUEST不会导致XSS/XSRF.不了解XSS/XSRF的细微差别会导致XSS/XSRF.只要您使用令牌缓解,就没有问题并且您可以获得使用$ _REQUEST(所有变量都在一个超全局中)的好处.由于'variables_order',我实际上在使用它之前重建$ _REQUEST基于其他超级全局.我处理$ _COOKIE,然后是$ _GET,然后是$ _POST.那样POST变量具有最高优先级,cookie变量最低,这允许我隐式修复一些错误(例如Adobe Flash和魔术引号). (9认同)
  • +1表示性能差异的概念可以忽略不计,维护视角更重要:$ _GET和$ _POST以$ _REQUEST不能的方式传达意义. (3认同)
  • $ _REQUEST据说(或者至少曾经)比直接使用$ _POST和$ _GET更昂贵. (2认同)

Zee*_*Ken 30

GET与POST

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

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

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

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

什么时候使用GET?

使用GET方法从表单发送的信息对每个人都可见(所有变量名称和值都显示在URL中).GET还对要发送的信息量有限制.限制大约是2000个字符.但是,由于变量显示在URL中,因此可以为页面添加书签.这在某些情况下很有用.

GET可用于发送非敏感数据.

注意:绝不应将GET用于发送密码或其他敏感信息!

什么时候使用POST?

使用POST方法从表单发送的信息对其他人不可见(所有名称/值都嵌入在HTTP请求的正文中),并且对要发送的信息量没有限制.

此外,POST支持高级功能,例如在将文件上载到服务器时支持多部分二进制输入.

但是,由于变量未显示在URL中,因此无法为页面添加书签.

  • 请添加一些关于REQUEST的内容. (5认同)

gew*_*wel 21

$ _GET从查询字符串或您的URL中检索变量.>

$ _POST从POST方法中检索变量,例如(通常)表单.

$ _REQUEST是$ _GET和$ _POST的合并,其中$ _POST会覆盖$ _GET.很高兴在自我验证表格上使用$ _REQUEST进行验证.

  • +1这基本上就是我所教的内容.不像其他答案那样技术性,但更容易记住(来自查询字符串的`GET`,来自表单提交的`POST`). (3认同)

Dan*_*uce 17

我建议使用$_POST$_GET明确.

无论如何,在正确的网站设计中使用$ _REQUEST应该是不必要的,并且它带来一些缺点,例如让您更容易受到CSRF/XSS攻击以及在URL中存储数据所带来的其他愚蠢.

速度差异应该是最小的.


Ste*_*ker 7

使用REQUEST.没有人关心这种简单操作的速度,而且代码更清晰.

  • 很好的答案,但需要注意的是,在许多情况下,应根据情况选择GET或POST,而不是使用任何一种. (7认同)
  • _REQUEST更卫生的说法需要详细阐述. (6认同)
  • 为什么与$ _GET或$ _POST相比,$ _REQUEST更清洁?$ _REQUEST在场景后面执行相同的逻辑,并且选择GET或POST可以提供更多控制. (4认同)
  • 你没关系,你是对的,但在我看来,使用`$ _REQUEST`是错误的结论.看我的回答. (3认同)
  • 如果您希望用户能够复制URL并执行相同的操作,则建议使用GET,即(它的URL像'google.com/q=searchWord'这样可见,而POST应该用于将数据发布到网站上只能插入一次,否则将有大量数据处于活动状态,并且用户不应像在数据库中插入数据,登录等那样保留网址。 (2认同)

Fra*_*anz 7

别担心.但是你仍然应该使用第二种解决方案(加上对这些变量不存在的额外检查),因为存在安全问题$_REQUEST(因为$_GET并且$_POST不是该数组的唯一源).

$_REQUEST我相信有一篇关于昨天问题的帖子.让我去找吧.

编辑:哦,好吧,不是直接的帖子,但无论如何它在这里:http://kuza55.blogspot.com/2006/03/request-variable-fixation.html


Kri*_*oks 5

if (isset($_GET['s'])) {
  $temp = $_GET['s'];
}
else {
  $temp = $_POST['s'];
}
Run Code Online (Sandbox Code Playgroud)

Use that because it is safer and it won't make noticeable speed difference