Хранение вложенных массивов в файле cookie

Я пытаюсь хранить вложенные массивы в cookie. Я решил сохранить массив как строку JSON. Однако я получаю это предупреждение:

PHP Предупреждение: значения Cookie не могут содержать ни одно из следующих значений:,; \ t \ r \ n \ 013 \ 014 'в foobar.php

Есть ли рекомендуемый способ хранения вложенных массивов в файле cookie?

Вы можете использовать base64_encode() и base64_decode()

Обратите внимание, что согласно руководству:

Данные с кодировкой Base64 занимают на 33% больше места, чем исходные данные.

Если у вас есть другая форма сохранения (db, сеансы, memcache), я бы рекомендовал хранить там реальные данные. Затем поместите уникальный идентификатор в файл cookie, который можно использовать для поиска нужных данных. Это намного чище и безопаснее.

Есть ли рекомендуемый способ хранения вложенных массивов в файле cookie?

Да, не надо. Храните его на сервере, используя сеанс или другой дескриптор. Мало того, что существуют проблемы с форматированием и областью хранения данных в файлах cookie, размер файла также ограничен.

C.

Я не думаю, что это чистый способ сделать это, но вы можете urlencode строку json_encode d, чтобы иметь возможность хранить ее в файле cookie.

Изменить: Tom Haigh way, безусловно, более чистый (с использованием base64_encode).

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