11

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

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

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

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

$_SESSION['name'] = $name;ETC

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

4

4 回答 4

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

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

$_SESSION['post-data']['name']
$_SESSION['post-data']['username']
...
于 2013-01-22T18:27:23.360 回答
9

您可以将一个数组添加到另一个数组。
$_POST并且$_SESSION只是数组。
请注意,第二个数组中的键在重复的情况下优先。

$_SESSION += $_POST;

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

于 2013-01-22T18:27:13.703 回答
3

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

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

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

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

于 2013-01-22T18:39:37.060 回答
0

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

于 2015-01-09T03:42:04.580 回答