php - PHP 中的 $_REQUEST

标签 php request

我有这个代码。

$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 是一个超全局数组(来自 PHP 文档):

An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE.

喜欢$_GET , $_POST , $_COOKIE ,和$_SESSION ,它可以关联地存储信息列表。以$_REQUEST为例, $_POST ,和$_GET这些数组将存储发送到 PHP header 的编码数据。

可能包含的内容示例(但不建议这样设置):

$_REQUEST['key1'] = 'value1';
$_REQUEST['streetAddress'] = '123 Baker St';

或者这里是一个从 GET 参数填充它的链接示例: <a href='?key=value'>value</a> // for $_GET and $_REQUEST

PHP 将从 URL 中获取该键->值并将其保存到您正在使用的超全局数组中。要访问它,请调用: echo $_REQUEST['key']; // displays 'value'

就您而言,到目前为止,浏览器还没有发送消息。它需要通过不同的方式(表单、href 等)传递。所以,

 $_REQUEST['msg'] = 'new'; // not recommended to actually set it directly, purely illustrative of it already being set to something
 if (isset($_REQUEST['msg'])) { // use isset() to avoid an error
    if ($_REQUEST['msg'] == 'new') {
        $message = 'New User has been added successfully';  
    } elseif ($_REQUEST['msg'] == 'edit') {
        $message = 'User has been saved successfully';
    } elseif ($_REQUEST['msg'] == 'update') {
        $message = 'User(s) has been Updated successfully';
    }
} // sets $message = "New user..."

使用$_REQUEST不推荐。它违背了最佳实践,因为它使得很难控制处理哪些信息。 GET 参数、POST 参数和 cookie 都有不同的用途。最好决定您要处理的数据应来自哪些数据并使用 $_GET , $_POST ,或$_COOKIE因此。 $_GET请求显示 URL 中的键->值对。您不希望可见的信息可能不应该显示在那里。 GET 适合指示用户正在访问的内容,但这样做并不等于请求的操作/更改。 POST 更适合用户请求执行某些操作(例如更新数据或发送电子邮件)时涉及的参数。在适当的时候使用 GET 而不是 POST 可以降低用户仅仅通过回击或为页面添加书签(例如意外地第二次购买某些东西)而意外地重新请求更改/操作的可能性,尽管它并不能完全消除这种情况可能性,因为这取决于浏览器在这些情况下是否重新发送 POST 数据。

如果您使用$_REQUEST对于所有内容,用户可以通过 URL 发送键->值对,以查看需要传递哪些信息并以其他方式利用该信息(谷歌跨站点请求伪造)。相反,使用更具体的 $_GET、$_POST 和 $_COOKIE 变量会使他们尝试此操作变得更加困难。然而,使用这些实际上并不能保护您,因为您仍在处理 GET 参数、POST 参数或用户发送的 cookie。即便如此,最好限制代码在不同场景中处理哪些内容。最终,您仍然需要使用适当的技术来防止以危险的方式处理用户提供的值,但这是一个单独的主题。

TL;博士:$_REQUEST['msg'] -- 'msg' 是键->值对中的键('new'| 'edit' | 'update' 是值)。 $_REQUEST是一个超全局数组,其中包含用户浏览器或其他客户端发送的 GET、POST 和 cookie 键和值。可以从 PHP 代码的任何部分访问它。

关于php - PHP 中的 $_REQUEST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195602/

相关文章:

c# - 是否可以不断地动态混合音轨并将结果传输到浏览器?

javascript - 当前元素(事件)突出显示不起作用

php - 如何使用 PHP 从 CDATA 字符串读取数组

java - 为什么在 java 中使用 request.getParameter() 时字符损坏?

android-TextView 的 setText() 上的 NullPointerException

python - 如何使用Python请求转到主机的特定路径?

HTTP 客户端超时和服务器超时

javascript - 删除 Silverstripe 中的 'Duplicate this page and subpages' 功能

javascript - Angular 7 : How to increase the time of an angular request

javascript - 动态生成div标签