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

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

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

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

6
задан Galen 22 April 2010 в 15:59
поделиться

5 ответов

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

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

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

3
ответ дан 16 December 2019 в 21:36
поделиться

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

2
ответ дан 16 December 2019 в 21:36
поделиться

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

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

С.

2
ответ дан 16 December 2019 в 21:36
поделиться

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

Редактировать: Путь Тома Хая, безусловно, чище (с использованием base64_encode).

1
ответ дан 16 December 2019 в 21:36
поделиться
$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)
0
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: