我需要将完整的$_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
变量而没有任何问题。
感谢您的帮助。
答案 0 :(得分:3)
如果您想将$_POST
存储到$_SESSION
,请采用以下方法;
$_SESSION['POST'] = serialize($_POST); #Copy _POST to _SESSION
$_POST = unserialize($_SESSION['POST']); #Copy it back.
另外,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) )
等