
说起$_REQUEST,大家都知道的是它是$_GET和$_POST的集合。但是如果你有心的话,查一下文档,会看到:
$_REQUEST
An
associative
array
that
by
default
contains
the
contents
of
$_GET,
$_POST
and
$_COOKIE.
这里说$_REQUEST默认是$_GET,
$_POST,
$_COOKIE的集合,结果我使用我本地的php查看了一下发现只有$_GET,
$_POST,
没有$_COOKIE!!
难道文档是错的?
答案
其实changelog中有给出解释:
版本5.3以上,php.ini中有request_order属性来设置$_REQUEST。查了下php.ini,
request_order设置成为了GP(Get
and
Post)。
request_order的官网描述:
request_order
string
This
directive
describes
the
order
in
which
PHP
registers
GET,
POST
and
Cookie
variables
into
the
_REQUEST
array.
Registration
is
done
from
left
to
right,
newer
values
override
older
values.
If
this
directive
is
not
set,
variables_order
is
used
for
$_REQUEST
contents.
Note
that
the
default
distribution
php.ini
files
does
not
contain
the
'C'
for
cookies,
due
to
security
concerns.
原来是G,P,C分别代表Get,Post,Cookie,5.3以上的版本request_order默认是设置成GP的,并不包含C,即$_REQUEST默认只包含$_GET和$_POST
!!
(所以官网文档有一定的误导)。
也同时说一下G,P,C的先后顺序就是设置的array的覆盖顺序。
提醒下如果你是使用fpm-php实验的话,改了php.ini后你需要重启php-fpm
PHP $_REQUEST是用于收集HTML表单提交的数据,PHP $_REQUEST属于PHP的超级全局变量。
以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。
在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据。
扩展资料:
PHP中预定义了几个超级全局变量 ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
1、$GLOBAL
$GLOBAL 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。$GLOBAL 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
2、$_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
3、$_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。
4、$_POST
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"
5、$_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
参考资料:百度百科——超级全局变量
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)