前面我们介绍了 $_POST 和 $_GET 这两个全局变量,它们分别可以用来获取 from 表单通过 POST 或者 GET 方式所提交的数据。在实际开发过程中,我们不知道 form 表单通过哪种方式提交数据时,该怎么办呢?PHP 中提供了一个 $_REQUEST 全局变量,它是一个包含了 $_POST、$_GET 和 $_COOKIE 的数组,数组结构与 $_POST 和 $_GET 类似。
也就是说不管是使用 POST 还是使用 GET 方式提交的数据,都可以使用 $_REQUEST 来获取,甚至可以使用 $_REQUEST 来获取 COOKIE 的信息。在 PHP5.3 中引入 request_order 属性,我们可以通过在 php.ini 配置文件中修改 request_order 属性的值,来控制 $_REQUEST 中包含的内容。
request_order 属性的值可以是 G、P 和 C 这三个大写的英文字母,它们分别代表 GET、POST 和 COOKIE。默认情况下 request_order 属性的默认值为 request_order="GP",并不包含 C,也就是说 $_REQUEST 中并不包含 COOKIE 的信息,如果我们希望 $_REQUEST 中包含 COOKIE 的话,需要将其修改为request_order="GPC"。
【示例】使用 $_REQUEST 来接收表单中传递过来的数据。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>城东书院</title>
</head>
<body>
<p>------------------------get------------------------</p>
<form action="index.php" method="get">
姓名:<input type="text" name="name" placeholder="请输入姓名"><br>
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
爱好:<input type="checkbox" name="hobby[]" value="read">阅读
<input type="checkbox" name="hobby[]" value="travel">旅游
<input type="checkbox" name="hobby[]" value="sport">运动
<input type="checkbox" name="hobby[]" value="internet">上网<br>
职业:<select name="job">
<option value="coder">程序员</option>
<option value="teacher">教师</option>
<option value="doctor">医生</option>
<option value="other">其它</option>
</select><br>
<input type="submit" value="提交">  <input type="reset" value="重置">
</form>
<p>------------------------post------------------------</p>
<form action="index.php" method="post">
姓名:<input type="text" name="name" placeholder="请输入姓名"><br>
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
爱好:<input type="checkbox" name="hobby[]" value="read">阅读
<input type="checkbox" name="hobby[]" value="travel">旅游
<input type="checkbox" name="hobby[]" value="sport">运动
<input type="checkbox" name="hobby[]" value="internet">上网<br>
职业:<select name="job">
<option value="coder">程序员</option>
<option value="teacher">教师</option>
<option value="doctor">医生</option>
<option value="other">其它</option>
</select><br>
<input type="submit" value="提交">  <input type="reset" value="重置">
</form>
</body>
</html>
<?php
if(!empty($_REQUEST)){
echo '提交成功!<br><pre>';
var_dump($_REQUEST);
}
?>
运行上面的代码,不论是选择哪种提交方式,使用 $_REQUEST 都可以成功接收到表单传递的信息。