将嵌套数组存储在cookie中

时间:2010-04-22 15:54:11

标签: php cookies

我正在尝试将嵌套数组存储在cookie中。我决定将数组存储为JSON字符串。但是,我收到了这个警告:

PHP警告:Cookie值不能包含以下任何一项',; \ fo \ r \ n \ 013 \ 014'在foobar.php中

是否建议在cookie中存储嵌套数组?

5 个答案:

答案 0 :(得分:3)

您可以使用base64_encode()base64_decode()

请注意,根据手册:

  

Base64编码数据大约需要33%   比原始数据更多的空间。

答案 1 :(得分:2)

如果你有其他形式的持久性可用(db,sessions,memcache),我建议在那里存储真实数据。然后在cookie中放入一个唯一的标识符,可用于查找所需的数据。它更清洁,更安全。

答案 2 :(得分:2)

  

是否建议在cookie中存储嵌套数组?

是 - 不要。使用会话或其他句柄将其存储在服务器端。将数据存储在cookie中不仅存在格式化和范围问题,还存在文件大小限制。

下进行。

答案 3 :(得分:1)

我认为这不是一种干净的方式,但您可以urlencode json_encode d字符串将其存储在Cookie中。

编辑:Tom Haigh的方式当然更清晰(使用base64_encode)。

答案 4 :(得分:0)

$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)