将$ _POST保存到$ _SESSION

时间:2014-02-07 16:15:02

标签: php session post

我需要将完整的$_POST保存到$_SESSION,然后将其保存到$_POST,我会找到相应的代码:

// 1.save
$_SESSION['POST'] = $_POST;

// 2.ERROR HERE - its return empty array
var_dump($_SESSION['POST']);

// 3.reload page

// 4.back all data to $_POST
$_POST = $_SESSION['POST'];

当然在文件顶部我有session_start();我在我的文件中使用了$_SESSION变量而没有任何问题。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

如果您想将$_POST存储到$_SESSION,请采用以下方法;

$_SESSION['POST'] = serialize($_POST); #Copy _POST to _SESSION
$_POST = unserialize($_SESSION['POST']); #Copy it back.
  • 此外,您可以采用json_encode并相应地进行解码。

另外,adopt what helion3 said并检查_POST实际上是否有键/值,然后再将其分配给_SESSION

这是一个快速演示。

我有一个包含以下数据的_POST,

Array ( 
 [name] => Frank 
 [animal] => Penguin 
)

我使用上面的脚本将其复制到_SESSION制作值;

1a:2:{s:4:"name";s:5:"Frank";s:6:"animal";s:7:"Penguin";}

然后我将其复制回_POST,并成为原来的

Array ( 
 [name] => Frank 
 [animal] => Penguin 
)

这是一个演示脚本。

<?php

session_start();

$_POST = array();
$_POST['name'] = "Frank";
$_POST['animal'] = "Penguin";

$_SESSION['POST'] = serialize($_POST);
print_r($_SESSION['POST']);

unset($_POST); # _POST has been destroyed

//Now rebuild _POST
$_POST = unserialize($_SESSION['POST']);
print_r($_POST);

答案 1 :(得分:1)

在我们看到更多代码之前,我会假设您没有检查$_POST是否包含数据。如果它是空的(除非有实际的POST数据,它将一直是空的),它将重置$ _SESSION每个请求。

检查$_POST是否为空(有多种方式):

if( !empty($_POST) )if( count($_POST) )