在SESSION中存储所有POST数据

时间:2013-01-22 18:25:34

标签: php session

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

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

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

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

$_SESSION['name'] = $name;

任何答案都将受到高度赞赏。 谢谢。

4 个答案:

答案 0 :(得分:22)

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

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

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

答案 1 :(得分:8)

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

$_SESSION += $_POST;

但是,我没有看到这个结局很好,因为客户端可以向会话注入他想要的任何东西,E.G。劫持您的用户会话ID。

答案 2 :(得分:2)

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

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

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

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

答案 3 :(得分:0)

通过php中的表单发布或标题位置重定向传递变量的最佳解释,请查看此主题中的答案:How to pass variables received in GET string through a php header redirect?