Я пытаюсь сохранить вложенные массивы в cookie. Я решил сохранить массив как строку JSON. Однако я получаю это предупреждение:
Предупреждение PHP: значения Cookie не могут содержать ни одно из следующих'; \t\r\n\013\014' в foobar.php
Существует ли рекомендуемый способ сохранить вложенные массивы в cookie?
Вы можете использовать base64_encode ()
и base64_decode ()
Обратите внимание, что согласно руководству:
Данные в кодировке Base64 занимают примерно на 33% больше места чем исходные данные.
Если у вас есть доступная другая форма сохранения (база данных, сеансы, кэш памяти), я бы рекомендовал хранить там реальные данные. Затем поместите в файл cookie уникальный идентификатор, который можно использовать для поиска нужных данных. Это просто намного чище и безопаснее.
Есть ли рекомендуемый способ хранения вложенных массивов в куки?
Да - не надо. Храните его на сервере, используя сеанс или другой дескриптор. Существуют не только проблемы с форматированием и областью хранения данных в файлах cookie, но и ограничение размера файла.
С.
Я не думаю, что это чистый способ сделать это, но вы можете urlencode
строку json_encode
d, чтобы сохранить ее в файле cookie.
Редактировать: Путь Тома Хая, безусловно, чище (с использованием 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)