在PHP编程中,当我们需要同时处理通过多种HTTP方法提交的数据时,$_REQUEST 超全局数组提供了便捷的解决方案。

$_REQUEST 是一个关联数组,默认情况下包含了 $_GET、$_POST 和 $_COOKIE 的数据。它允许开发者通过统一的方式访问通过不同HTTP方法提交的数据。

$_REQUEST数组的语法结构:

<?php // 访问请求数据$_REQUEST['参数名'];// 设置REQUEST变量$_REQUEST['参数名'] = 值;?>

我们知道,$_GET是通过URL传递,$_POST是通过HTTP请求体传递,所以我们可以准备一个test.php来模拟这两个场景来验证$_REQUEST数组:

<?php
error_reporting(E_ALL);//开启所有报错
ini_set('display_errors', 1);//允许在页面展示错误
// 设置cookie
setcookie('my_cookie', 'cookie_data', time() + 3600, '/');//准备一个1个小时后过期的cookie
// 处理提交的数据
if ($_SERVER['REQUEST_METHOD'] === 'POST' || !empty($_GET)) {
    echo "<h2>数据接收结果:</h2>";
    
    /*显示GET参数*/
    echo "<strong>GET参数:</strong><br>";
    foreach ($_GET as $key => $value) {
        echo "$key = $value<br>";
    }
    
    /*显示POST参数 */
    echo "<br><strong>POST参数:</strong><br>";
    foreach ($_POST as $key => $value) {
        echo "$key = $value<br>";
    }
    
    /*显示COOKIE参数*/
    echo "<br><strong>COOKIE参数:</strong><br>";
    foreach ($_COOKIE as $key => $value) {
        echo "$key = $value<br>";
    }
    
     /*显示REQUEST参数(三者合并)*/
    echo "<br><strong>REQUEST参数(全部):</strong><br>";
    foreach ($_REQUEST as $key => $value) {
        echo "$key = $value<br>";
    }
    
    echo '<hr><a href="test.php">返回</a>';
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>:$_REQUEST 数组</title>
</head>
<body>
    <h1>Dotcpp编程——:$_REQUEST 数组测试</h1>
    
    <!-- GET表单 -->
    <form method="GET" action="test.php">
        <h3>GET 请求:</h3>
        <input type="text" name="get_name" value="get_test">
        <button type="submit">GET提交</button>
    </form>
    
    <form method="POST" action="test.php">
        <h3>POST 请求:</h3>
        <input type="text" name="post_name" value="post_test">
        <button type="submit">POST提交</button>
    </form>
    
    <p><strong>说明:</strong></p>
    <ul>
        <li>GET参数:通过URL传递(如:?get_name=get_test)</li>
        <li>POST参数:通过表单体传递(不在URL中显示)</li>
        <li>COOKIE参数:通过浏览器cookie传递</li>
        <li>REQUEST参数:包含以上所有(注意:同名参数有优先级)</li>
    </ul>
    
    <p><strong>重要提示:</strong></p>
    <ul>
        <li>COOKIE需要刷新页面或第二次访问才能看到</li>
        <li>REQUEST中同名参数:POST > GET > COOKIE(受php.ini中request_order影响)</li>
    </ul>
</body>
</html>

总结:$_REQUEST 数组在快速开发和简单应用中很方便,但在重要的生产代码中建议使用更明确的数据来源。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)