何时以及为什么要使用$ _REQUEST而不是$ _GET/$ _POST/$ _COOKIE?

Imr*_*ran 22 php

标题中的问题.

当所有3个$_GET[foo],$_POST[foo]以及$_COOKIE[foo] exist?其中哪一个被包括在内时会发生什么$_REQUEST?

Ric*_*haw 53

我永远不会说.

如果我想通过各种方法设置某些东西,我会为每个方法编写代码以提醒自己我是这样做的 - 否则你最终可能会被覆盖而没有意识到.

不应该像这样工作:

$ _GET =非破坏性操作(排序,记录操作,查询)

$ _POST =破坏性操作(删除,更新)

$ _COOKIE =琐碎的设置(样式表首选项等)

$ _SESSION =非平凡设置(用户名,登录?,访问级别)


Int*_*end 7

有时您可能希望使用几种不同的方式调用相同的脚本.我想到了表单提交和AJAX调用.然而,在大多数情况下,最好是明确的.

另请参阅http://docs.php.net/manual/en/ini.core.php#ini.request-order,了解如果存在名称冲突,不同的变量源如何相互覆盖.


e-s*_*tis 5

$_REQUEST如果数据可以来自其中任何一个,则只是防止您测试 post、get 和 cookie 的快捷方式。

有一些陷阱:

  • 数据取自 GET、POST,最后取自 COOKIE。最后一个会覆盖第一个,所以要小心。
  • REST 架构要求您分离 POST 和 GET 语义,在这种情况下您不能依赖$_REQUEST

然而,如果您知道自己在做什么,那么这只是另一个方便的PHP技巧。

如果我想快速更新可能来自多个来源的变量,我会使用它,例如:

  • 在您的控制器中,决定提供哪个页面,而不检查请求是否来自表单操作或超文本链接。

  • 检查会话是否仍处于活动状态,无论会话 ID 的传输方式如何。