PHP 中的 $_REQUEST

$_REQUEST in PHP

我有这个代码。

$message = "";

if($_REQUEST['msg'] == "new"){
    $message = "New User has been added successfully";
}else if($_REQUEST['msg'] == 'edit'){
    $message = "User has been saved successfully";
}else if($_REQUEST['msg'] == 'update'){
    $message = "User(s) has been Updated successfully";
}

谁能告诉我什么是 ['msg'] 并请解释 $_REQUEST 的功能?

$_REQUEST 包含由 post 传递的值,获取 and/or cookie。由于 get 很容易破解,因此更安全的机制是在将数据从一个 html/php 文件发送到另一个文件时使用 post。然后你需要使用 $_POST 来获取数据。您可以从中找到更多详细信息 link.

因此在您的情况下,之前的 html 页面使用了其中一种技术来使用 variable/parameter/cookie 命名的 msg 来传递数据。

$_REQUEST['msg'] 是超全局数组中的一个键。 基本上 $_REQUEST 将访问它,即使变量是通过 $_POST 或 $_GET 发送的:

$_POST : $_GET : page.php?msg=testMsg

$_REQUEST 是一个超级全局数组。就像 $_GET、$_POST、$_COOKIE、$_SESSION 等。这意味着它可以以数字或关联的方式存储列表信息。

例如: 联想: $array = array(key->value, key->value); 数字: $array = array([0]->value, [1]->value);

在 $_REQUEST 或 $_POST 或 $_GET 的情况下,这些数组将存储发送到 PHP header 的编码数据。

例如: $_REQUEST['key'] = value;

您有一个导航项: <a href='?key=value'>value</a> //for $_GET

PHP 会将键->值编码为 url 并将其保存到您正在使用的超级全局数组中。要访问它,请调用: echo $_REQUEST['key']; //returns 'value'

在你的例子中,到目前为止,msg 还没有被编码到浏览器中。它需要通过不同的方式(表单、href 等)传递。所以,

 $_REQUEST['msg'] = 'new';
 if(isset($_REQUEST['msg'])){       //use isset() to avoid an error
    if($_REQUEST['msg'] == "new"){
        $message = "New User has been added successfully";  
    }else if($_REQUEST['msg'] == 'edit'){
        $message = "User has been saved successfully";
    }else if($_REQUEST['msg'] == 'update'){
        $message = "User(s) has been Updated successfully";
    }
}                           //returns $message = "New user..."

不建议使用 $_REQUEST,因为它很难控制处理的信息。 $_GET 请求显示 url 中的键->值对。您不希望显示的信息可能不应该显示在那里。使用 $_REQUEST,用户可以通过 url 发送该键->值对,以查看需要传递哪些信息并以其他方式利用该信息(google cross-site 请求伪造)。

TL;DR : $_REQUEST['msg'] -- 'msg' 是键->值对中的一个键 ('new'| 'edit' | 'update' 是值)

$_REQUEST是一个超全局数组,保存用户在网站其他部分任意范围内可以使用的值。