2011-09-14 149 views
2

我數組轉換成餅乾由PHP序列化功能存儲陣列中的cookie

$PromoteProductArray = array("PromoteuserId"=>$PromoteuserId, 
"PromoteProductId"=>$PromoteProductId, 
"PromoteBrandId"=>$PromoteBrandId); 

$Promotedcart[] = $PromoteProductArray; 

setcookie("Promotedcart", serialize($Promotedcart), time()+604800,'/'); 

,並在創建cookie時,然後我用反序列化PHP函數。

print_r(unserialize($_COOKIE['Promotedcart'])); 

它不起作用。

當我print_R($_COOKIE)然後它顯示我的價值。

+1

測試數據可以是非常有幫助的,你可以發佈樣本 – varela

+0

[見此StackOverflow問題](http://stackoverflow.com/questions/9032007/arrays-in-cookies-php)爲更好的答案。 –

+0

請不要在用戶提交的數據上使用'unserialize'。這很容易通過使用PHP的__wakeup和__destruct方法進行對象注入來利用。你可以使用'json_encode/json_decode'而不是'serialize/unserialize'。 https://www.owasp.org/index.php/PHP_Object_Injection –

回答

0

以分號分隔的Cookie。帶數組的序列化字符串包含它們。也許這是一個問題。您可以使用base64來避免所有可能的轉義問題。

+0

我試過base64,也:(但沒有結果 – Amit

0

您可以使用json_encode,json_decode函數來實現此選項。

$PromoteProductArray = array("PromoteuserId"=>$PromoteuserId, 
"PromoteProductId"=>$PromoteProductId, 
"PromoteBrandId"=>$PromoteBrandId); 
$Promotedcart[] = $PromoteProductArray; 
setcookie("Promotedcart", json_encode($Promotedcart), time()+604800,'/'); 
$result = json_decode($_COOKIE['Promotedcart'], true); 
print_r($result); 

試試看,這應該有效。