我是PHP的初学者,我在手册中读到$_REQUEST
是一个由cookie,get和post数组组成的关联数组。我想知道哪个优先于请求数组。
假设,假设user
以及$_POST
中有变量$_COOKIE
,如果我使用echo $_REQUEST['user']
则会打印出来。我试过了,我得到了$_POST
中设置的值。如果我想打印$_COOKIE
我应该使用的值?我知道$_COOKIE
在那里,但如果我想要打印它仍然使用$_REQUEST
,那我该怎么做呢?
提前致谢:)
答案 0 :(得分:4)
来自$_REQUEST
(php.net)的PHP手册:
注意:$ _REQUEST中的变量是 通过GET提供给脚本, POST和COOKIE输入机制和 因此可以修改 远程用户,不可信任。该 列出的变量的存在和顺序 在这个数组中根据定义 PHP variables_order配置 指令。
事实上,PHP使用request_order
配置值,但如果为空,则会返回variables_order
。
请求或变量订单的可能值可能如下所示:"GPC"
。这意味着首先将所有Get变量关联起来,然后将Cookie变量关联到Post后。顺序是从左到右,已定义的值被覆盖。除了GET,POST和cookie值,PHP还可以关联环境("E"
)和服务器("S"
)变量。
您将找到PHP配置here的相应手册条目。
答案 1 :(得分:3)
http://www.php.net/manual/en/ini.core.php#ini.request-order
该指令描述了PHP将GET,POST和Cookie变量注册到$ _REQUEST数组中的顺序。注册从左到右完成,较新的值覆盖较旧的值。
如果未设置此指令,则variables_order用于$ _REQUEST内容。
请注意,出于安全考虑,默认分发php.ini文件不包含Cookie的“C”。
答案 2 :(得分:2)
这取决于。有一个名为request_order
的设置。
答案 3 :(得分:1)
来自$ _REQUEST手册页:
$ _REQUEST中的变量通过GET,POST和COOKIE输入机制提供给脚本,因此可以被远程用户修改并且不可信任。此数组中列出的变量的存在和顺序是根据PHP variables_order配置指令定义的。
答案 4 :(得分:1)
答案 5 :(得分:1)
只需执行一个print_r($_REQUEST)
,你会看到,因为它是一个关联数组,每个键只能有一个值。因此,如果在POST,GET和COOKIE上使用相同的键,则数组中只有一个值,因此您无法从$ _REQUEST数组中获取其他值。在这种情况下,你必须使用$ _COOKIE超级全局。
答案 6 :(得分:0)
你真的不应该使用$ _REQUEST而应该是个人GLOBALS
echo $_POST['user'];
echo $_COOKIE['user'];
echo $_GET['user'];
这将为您的应用添加额外的安全层