首先,我对 cookie 不是很熟悉,但我知道它们是如何工作的。我已经看过很多使用纯 PHP 代码的不同教程,但我正在寻找一个可靠的示例,说明如何使用 symfony 语法将数组存储在 cookie 中:
$this->getResponse()->setCookie('myCookie', $data);
您不能只传入一个数组,因为它需要一个字符串。是首先序列化数组的唯一方法吗?
在 cookie 中存储数据时还有其他选择吗?
如果您确实需要将其存储在 cookie 中而不是会话中,则可以使用序列化:
$this->getResponse()->setCookie('myCookie', serialize($data));
$data = unserialize($this->getRequest()->getCookie('myCookie'));
您可以将数组转换为 cookie 中的一组键/值,以防数组是唯一要存储的主题:
$this->getResponse()->setCookie('myCookie[0]', $data1);
$this->getResponse()->setCookie('myCookie[1]', $data2);
您可能应该将数据存储在会话中,而不是 cookie。
PHP 自动支持这一点;只需将您的数据放入$_SESSION['key']
,它就会在该用户的页面加载中持续存在。
在幕后,PHPPHPSESSID
在客户端设置一个 cookie,并使用它在您的 Web 服务器上查找数据。与使用 cookie 相比,这有两个明显的好处。
有关更多信息,请参阅有关会话的 PHP 文档。