php $_REQUEST、$_GET、$_POST

100人浏览   2025-03-10 00:10:13

$_REQUEST

用于获取提交的表单数据。

如果提交的参数通过url方式,那么可以拿到,不管是get还是post,如果是通过请求体(如post的请求体)提交的数据,那么数据格式必须是 form-data 格式。也就是说请求体的数据格式不是 form-data 的话,$_REQUEST 是获取不到的。

<?php
$name = $_REQUEST['name'];
$age = $_REQUEST['age'];
echo $name.'年龄'.$age.'岁';

$_REQUEST参数覆盖优先级

$_REQUEST包括所有$_GET、$_POST和$_COOKIE几个数组中的数据元素。

如果这几个数组中的元素的键出现相同的,PHP将按照php.ini配置文件的变量赋值顺序依次对$_REQUEST数组中该关键字指定的元素进行重写。

在php.ini中,G代表$_GET,P代表$_POST,C代表$_COOKIE,E代表$_ENV,S代表$_SERVER。

按照配置文件的顺序,后面出现的数据会覆盖前面写入的数据。php7中默认的数据写入顺序是GP,因此,在关键字相同的情况下,POST包含的数据会覆盖GET中的数据。

; This directive determines which super global data (G,P & C) should be
; registered into the super global array REQUEST. If so, it also determines
; the order in which that data is registered. The values for this directive
; are specified in the same manner as the variables_order directive,
; EXCEPT one. Leaving this value empty will cause PHP to use the value set
; in the variables_order directive. It does not mean it will leave the super
; globals array REQUEST empty.
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; http://php.net/request-order
request_order = "GP"

$_GET、$_POST

$_GET 和 $_POST 其实和get或post请求没什么关系

$_GET 用于获取url上的参数

$_POST 用于获取请求体中的参数

所在post请求中也可以使用 $_GET 全局变量来获取url上的参数。

在post请求中,通过 $_REQUEST 参数获取同名的参数,比如在url上添加age,同时在请求体中也添加age参数,那么url上的该age参数会被请求体中的age参数覆盖掉,

<?php
$name = $_POST['name'];
$age = $_POST['age'];
$trueAge = $_GET['age'];
$reqAge = $_REQUEST['age'];
echo $name.'年龄'.$age.'岁'.', 实际年龄'.$trueAge.'<br>';
echo '最终的年龄是:'.$reqAge;

相关推荐