2024年PHP开发者大会日本站

$_REQUEST

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_REQUESTHTTP 请求变量

描述

一个关联数组,默认情况下包含$_GET$_POST$_COOKIE的内容。

注释

注意:

这是一个“超全局”或自动全局变量。这意味着它在整个脚本的所有范围内都可用。无需使用global $variable;就能在函数或方法中访问它。

注意:

命令行上运行时,这将包括argvargc条目;这些条目存在于$_SERVER 数组中。

注意:

$_REQUEST中的变量通过GET、POST和COOKIE输入机制提供给脚本,因此可以被远程用户修改,不可信赖。此数组中列出的变量的存在和顺序根据PHP request_ordervariables_order配置指令定义。

添加注释

用户贡献的注释 4 条注释

strata_ranger at hotmail dot com
16年前
不要忘记,因为$_REQUEST与$_GET和$_POST是不同的变量,所以在PHP中它被视为不同的变量——在运行时修改$_GET或$_POST元素不会影响$_REQUEST中的元素,反之亦然。

例如

<?php

$_GET
['foo'] = 'a';
$_POST['bar'] = 'b';
var_dump($_GET); // 元素 'foo' 是 string(1) "a"
var_dump($_POST); // 元素 'bar' 是 string(1) "b"
var_dump($_REQUEST); // 不包含元素 'foo' 或 'bar'

?>

如果您想通过单个标记评估$_GET和$_POST变量,而不包含$_COOKIE,请使用$_SERVER['REQUEST_METHOD']来识别使用的方法并相应地设置一个switch块,例如

<?php

switch($_SERVER['REQUEST_METHOD'])
{
case
'GET': $the_request = &$_GET; break;
case
'POST': $the_request = &$_POST; break;
.
.
// 等等
.
default:
}
?>
mike o.
14年前
截至PHP 5.3.0,系统上的默认php.ini可能会将cookie排除在$_REQUEST之外。request_order ini指令指定$_REQUEST数组中的内容;如果不存在,则variables_order指令生效。您的发行版的php.ini默认情况下可能会排除cookie,因此请注意。
codeblog.pro
4年前
在PHP 7.0版本及默认设置下,$_REQUEST数组不包含cookie。
Luke Madhanga
8年前
要访问$_POST、$_GET等,请使用函数filter_input(TYPE, varname, filter)来确保您的数据是干净的。

此外,我一直认为修改超全局变量是一个坏主意。我坚持这一观点,也建议您这样做。
To Top