通過序列化數組進行保存,但是在反序列化的時候要進行各種符號的轉義,否則反序列化會返回false;
例子:
$_COOKIE['DC_ORDERS']=serialize($_SESSION['dingcan_ShoppingCart_data']);
$cookie_info=unserialize(stripslashes($_COOKIE['DC_ORDERS']));
本人是經過了很長時間搞定的,開始在window下沒問題,到linux環境就不能反序列化,最後才發現是有特殊字符導致的。
注:
serialize()–將數組轉換為字符串,並保持數據結構不變
addslashes()–函數在指定的預定義字符前添加反斜槓。這些預定義字符是:
單引號 (‘)
雙引號 (“)
反斜槓 (\)
NULL
stripslashes() 函數是 addslashes() 的反向操作,即:刪除由 addslashes() 函數添加的反斜槓。
unserialize() 對單一的已序列化的變量進行操作,將其轉換回 PHP 的值。返回的是轉換之後的值,可為 integer、float、string、array 或 object。如果傳遞的字符串不可解序列化,則返回 FALSE。