Как сохранить массив данных в файле cookie с помощью Symfony? - PullRequest
4 голосов
/ 04 апреля 2009

Во-первых, я не очень хорошо знаком с куки, но я знаю, как они работают. Я видел довольно много разных уроков с простым PHP-кодом, но я ищу хороший пример того, как хранить массивы в cookie с использованием синтаксиса symfony:

$this->getResponse()->setCookie('myCookie', $data);

Вы не можете просто передать массив, так как он ожидает строку. Единственный способ сделать это, чтобы сначала сериализовать массив?

Есть ли другие варианты хранения данных в файле cookie?

Ответы [ 3 ]

3 голосов
/ 04 апреля 2009

Вы можете преобразовать массив в набор ключей / значений в вашем файле cookie, если массив является единственным объектом хранения:

$this->getResponse()->setCookie('myCookie[0]', $data1);
$this->getResponse()->setCookie('myCookie[1]', $data2);
3 голосов
/ 16 апреля 2009

Если вам действительно нужно сохранить его в файле cookie, а не в сеансе, вы можете использовать сериализацию:

$this->getResponse()->setCookie('myCookie', serialize($data));

$data = unserialize($this->getRequest()->getCookie('myCookie'));
2 голосов
/ 04 апреля 2009

Вы, вероятно, должны хранить данные в сеансе, а не в cookie.

PHP поддерживает это автоматически; просто поместите ваши данные в $_SESSION['key'], и они будут сохраняться при загрузке страниц этим пользователем.

За кулисами PHP устанавливает файл cookie PHPSESSID на клиенте и использует его для поиска данных на вашем веб-сервере. Это дает два отличных преимущества перед использованием файлов cookie.

  1. Данные не могут быть изменены. Файлы cookie могут быть изменены, удалены и иным образом повреждены клиентом. Вы не должны использовать их для хранения важной информации.
  2. Ваше хранилище не ограничено.
  3. У вас есть разные варианты хранения данных сеанса. Они могут быть на диске, в memcache или где-либо еще.
  4. Вы можете хранить сложные типы, такие как массивы или даже экземпляры объектов.

Подробнее см. документацию PHP по сеансам .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...