将嵌套数组存储在cookie中
我试图将嵌套数组存储在cookie中。我决定将数组存储为JSON字符串。但是,我收到此警告:将嵌套数组存储在cookie中
PHP警告:Cookie值不能包含以下任何',;; \ t \ r \ n \ 013 \ 014'在foobar.php
有推荐的方式来存储嵌套数组在cookie中?
这似乎适用于我。 – morpheous 2010-04-22 21:06:09
请记住,javascript base64解码不完全是跨浏览器http://*.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
这里有很多假设(从一些答案/反馈中判断)......它是一个嵌套数组并不一定意味着很多数据。首先,最大嵌套深度可能 morpheous 2010-04-22 20:40:56