我在这里看到许多帖子说不要使用该$_REQUEST变量。我通常不这样做,但有时很方便。它出什么问题了?
$_REQUEST
但绝对没有错,采取从两个输入$_GET,并$_POST在组合方式。实际上,这就是您几乎总是想做的:
$_GET
$_POST
对于通常通过GET提交的纯幂等请求,您想要的数据量可能无法容纳在URL中,因此实际上已将其更改为POST请求。
对于真正生效的请求,您必须检查它是否由POST方法提交。但是,这样做的方法是$_SERVER['REQUEST_METHOD']显式检查,而不是依靠$_POST为GET清空。而且无论如何,如果方法是POST,您仍可能要从URL中取出一些查询参数。
$_SERVER['REQUEST_METHOD']
POST
不,问题与$_REQUEST合并GET和POST参数无关。默认情况下,它也包含$_COOKIE。Cookie实际上根本不像表单提交参数:您几乎永远都不想将它们视为同一事物。
$_COOKIE
如果您不小心在网站上设置了一个与表单参数之一同名的cookie,那么由于cookie值覆盖了预期参数,依赖该参数的表单将神秘地停止正常工作。如果您在同一站点上有多个应用程序,则这非常容易做,并且当您只有几个用户使用旧Cookie时,您将很难再进行调试,而当您不再使用旧Cookie来破坏表格时,这种调试非常困难- 另一个可以复制。
您可以使用PHP5.3中的request_order配置将此行为更改为更明智的GP(否C)顺序。在无法做到这一点的地方,我个人会避免使用,如果需要组合的GET +POST数组,请手动创建。$_REQUEST
GP
C