Я пытаюсь хранить вложенные массивы в 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)