将所有开机自检数据存储在会话中


Storing all POST data in SESSION

我有更多的值(超过 20 美元)来自 $_POST 像这样...

$name = $_POST['name'];
$username = $_POST['username'];
$city = $_POST['city'];
$mobile = $_POST['mobile'];
$address = $_POST['address'];

注意:我已经阻止了SQL注入的值。

我的问题是我可以知道有没有办法一次将所有这些 POST 值存储在 SESSION 中吗?而不是这种方法..

$_SESSION['name'] = $name;

任何答案将不胜感激。谢谢。

$_SESSION['post-data'] = $_POST;

这将在单个会话变量中创建帖子值数组。这些值可作为

$_SESSION['post-data']['name']
$_SESSION['post-data']['username']
...

您可以将一个数组添加到另一个数组。
$_POST$_SESSION只是数组。
请注意,在出现重复项时,第二个数组中的键优先。

$_SESSION += $_POST;

但是,我认为这个结局并不好,因为客户端可以将他想要的任何内容注入会话,例如劫持您的用户会话 ID。

如果您查找使用与发布的数组相同的键设置的会话变量,则可以使用以下内容:

foreach ($_POST as $key => $value) {
    ${$key} = $value;
    $_SESSION[$key] = $value;
}

这将使您的 $_POST 数组根据数组键转换为变量,并同时设置会话。然后,您可以使用$_SESSION['name']$name访问name帖子。

这意味着您将不再需要使用:$name = $_POST['name'];。由于上面的代码将为您设置名称变量并设置会话变量。

php 中使用表单帖子或标头位置重定向传递变量的最佳解释 查看我在此线程中的答案: 如何通过 php 标头重定向传递 GET 字符串中收到的变量?