4

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

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

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

在 cookie 中存储数据时还有其他选择吗?

4

3 回答 3

4

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

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

$data = unserialize($this->getRequest()->getCookie('myCookie'));
于 2009-04-16T14:15:26.553 回答
3

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

$this->getResponse()->setCookie('myCookie[0]', $data1);
$this->getResponse()->setCookie('myCookie[1]', $data2);
于 2009-04-04T02:21:47.043 回答
2

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

PHP 自动支持这一点;只需将您的数据放入$_SESSION['key'],它就会在该用户的页面加载中持续存在。

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

  1. 数据不可篡改。客户端可以更改、删除或以其他方式破坏 Cookie。您不应该使用它们来存储重要信息。
  2. 您的存储空间是无限的。
  3. 您有不同的会话数据存储选项。它们可以放在磁盘上,也可以放在内存缓存中,或其他任何地方。
  4. 您可以存储复杂类型,如数组,甚至对象实例。

有关更多信息,请参阅有关会话的 PHP 文档

于 2009-04-04T02:12:29.673 回答