2014-02-07 48 views
0

我需要完整保存$_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變量沒有任何問題。

感謝您的幫助。

+3

顯示您的代碼。 –

+0

也許你的$ _POST是空的。 –

回答

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

這裏有一個快速演示。

我有以下數據彥博,

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); 
+0

爲什麼在會話支持數組/對象時將POST作爲序列化字符串存儲? – helion3

1

在我們看到更多的代碼之前,我們假設您不檢查$_POST是否包含數據。如果它是空的(除非有實際的POST數據,否則將永遠是),它會重置$ _SESSION每個請求。

檢查$_POST不爲空(有多種方法):

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