一尘不染

使用$ _REQUEST []有什么问题?

php

我在这里看到许多帖子说不要使用该$_REQUEST变量。我通常不这样做,但有时很方便。它出什么问题了?


阅读 357

收藏
2020-05-26

共1个答案

一尘不染

但绝对没有错,采取从两个输入$_GET,并$_POST在组合方式。实际上,这就是您几乎总是想做的:

  • 对于通常通过GET提交的纯幂等请求,您想要的数据量可能无法容纳在URL中,因此实际上已将其更改为POST请求。

  • 对于真正生效的请求,您必须检查它是否由POST方法提交。但是,这样做的方法是$_SERVER['REQUEST_METHOD']显式检查,而不是依靠$_POST为GET清空。而且无论如何,如果方法是POST,您仍可能要从URL中取出一些查询参数。

不,问题与$_REQUEST合并GET和POST参数无关。默认情况下,它也包含$_COOKIE。Cookie实际上根本不像表单提交参数:您几乎永远都不想将它们视为同一事物。

如果您不小心在网站上设置了一个与表单参数之一同名的cookie,那么由于cookie值覆盖了预期参数,依赖该参数的表单将神秘地停止正常工作。如果您在同一站点上有多个应用程序,则这非常容易做,并且当您只有几个用户使用旧Cookie时,您将很难再进行调试,而当您不再使用旧Cookie来破坏表格时,这种调试非常困难-
另一个可以复制。

您可以使用PHP5.3中的request_order配置将此行为更改为更明智的GP(否C)顺序。在无法做到这一点的地方,我个人会避免使用,如果需要组合的GET +POST数组,请手动创建。$_REQUEST

2020-05-26