我試圖將嵌套數組存儲在cookie中。我決定將數組存儲爲JSON字符串。但是,我收到此警告:將嵌套數組存儲在cookie中
PHP警告:Cookie值不能包含以下任何',;; \ t \ r \ n \ 013 \ 014'在foobar.php
有推薦的方式來存儲嵌套數組在cookie中?
我試圖將嵌套數組存儲在cookie中。我決定將數組存儲爲JSON字符串。但是,我收到此警告:將嵌套數組存儲在cookie中
PHP警告:Cookie值不能包含以下任何',;; \ t \ r \ n \ 013 \ 014'在foobar.php
有推薦的方式來存儲嵌套數組在cookie中?
這似乎適用於我。 – morpheous 2010-04-22 21:06:09
請記住,javascript base64解碼不完全是跨瀏覽器http://stackoverflow.com/questions/2820249/base64-encoding-and-decoding-in-client-side-javascript – 2013-09-23 12:49:39
我不認爲這是一個乾淨的方式做到這一點,但你可以urlencode
的json_encode
d字符串可以將其存儲在cookie中。
編輯:Tom Haigh的方式當然更清潔(使用base64_encode)。
這是一種常見的方法。如果你想從其他地方讀取cookie,'rawurlencode'可能是更好的選擇,例如。 JavaScript的'decodeURIComponent'。 – bobince 2010-04-22 16:07:11
$array = array();
$array[] = array(1,2,3);
$array[] = array('a','b','c');
setcookie("test",serialize($array));
只是序列化,工作得很好。
你得到的是在您的Cookie:
'test' => string 'a:2:{i:0;a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}i:1;a:3:{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";}}' (length=86)
如果您有可用的持久性(DB,會話內存緩存)的一些其他形式的,我建議你存儲的實際數據存在。然後在cookie中添加一個唯一的標識符,該標識符可用於查找所需的數據。它只是更清潔和更安全。
有沒有推薦的方法來存儲嵌套數組在cookie中?
是 - 不要。使用會話或其他句柄將它存儲在服務器端。不僅存在將數據存儲在cookie中的格式和範圍問題,還有文件大小限制。
C.
出於好奇,爲什麼你需要將那麼多的數據存儲到cookie中? – 2010-04-22 16:22:06
這裏有很多假設(從一些答案/反饋中判斷)......它是一個嵌套數組並不一定意味着很多數據。首先,最大嵌套深度可能<= 3。其次,我只存儲對象ID(整數)。 – morpheous 2010-04-22 20:40:56