php中使用$_REQUEST需要注意的一个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中使用$_REQUEST需要注意的一个问题相关的知识,希望对你有一定的参考价值。
参考技术A 问题说起$_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
_POST,_GET,_REQUEST区分
PHP $_REQUEST
PHP $_REQUEST 用于收集 HTML 表单提交的数据。
下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:
<html> <body> <form method="post" action="<?php echo $_SERVER[‘PHP_SELF‘];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_REQUEST[‘fname‘]; echo $name; ?> </body> </html>
PHP $_POST
PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 <form> 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:
<html> <body> <form method="post" action="<?php echo $_SERVER[‘PHP_SELF‘];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_POST[‘fname‘]; echo $name; ?> </body>
PHP $_GET
PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
$_GET 也可以收集 URL 中的发送的数据。
假设我们有一张页面含有带参数的超链接:
<html> <body> <a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a> </body> </html>
以上是关于php中使用$_REQUEST需要注意的一个问题的主要内容,如果未能解决你的问题,请参考以下文章