如何使用Symfony将数据数组保存在cookie中?

时间:2009-04-04 02:05:55

标签: php cookies symfony1

首先,我不是很熟悉cookies,但我知道它们是如何工作的。 我已经看过很多使用普通PHP代码的不同教程,但我正在寻找一个如何使用symfony语法在cookie中存储数组的可靠示例:

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

你不能只传入一个数组,因为它需要一个字符串。 是唯一能够首先序列化数组的方法吗?

将数据存储在Cookie中是否还有其他选项?

3 个答案:

答案 0 :(得分:3)

如果数组是唯一要存储的主题,您可以将数组转换为Cookie中的一组键/值:

$this->getResponse()->setCookie('myCookie[0]', $data1);
$this->getResponse()->setCookie('myCookie[1]', $data2);

答案 1 :(得分:3)

如果您确实需要将其存储在cookie中而不是存储在会话中,则可以使用序列化:

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

$data = unserialize($this->getRequest()->getCookie('myCookie'));

答案 2 :(得分:2)

您应该将数据存储在会话中,而不是cookie中。

PHP自动支持;只需将您的数据放在$_SESSION['key']中,它就会在该用户的页面加载过程中保持不变。

在幕后,PHP在客户端上设置了PHPSESSID cookie,并使用它来查找Web服务器上的数据。与使用cookie相比,这有两个明显的好处。

  1. 数据无法被篡改。 Cookie可以被客户更改,删除和修改。您不应该使用它们来存储重要信息。
  2. 您的存储无限制。
  3. 会话数据存储有不同的选项。他们可以使用磁盘,也可以使用内存缓存或其他任何内容。
  4. 您可以存储复杂类型,如数组,甚至是对象实例。
  5. 有关详情,请参阅the PHP documentation on sessions