如何在 Cakephp 3.5 中设置和获取 Cookie

Posted

技术标签:

【中文标题】如何在 Cakephp 3.5 中设置和获取 Cookie【英文标题】:How to set and get Cookies in Cakephp 3.5 【发布时间】:2018-09-21 04:58:22 【问题描述】:

我已阅读 Cakephp 文档,但效果不佳。 这是我的代码,

$this->response = $this->response->withCookie('remember_me', [
    'value' => 'yes',
    'path' => '/',
    'httpOnly' => true,
    'secure' => false,
    'expire' => strtotime('+1 year')
]);
$rememberMe = $this->request->getCookie('remember_me');

【问题讨论】:

你是不是要一个接一个地做这两行代码?我认为这行不通。典型用法是在对一个请求的响应中设置 cookie,然后您可以在 future 请求中获取该 cookie。 我一个接一个地尝试和工作在同一个函数中,但无法读取另一个页面并返回 NULL 当您拥有用于设置它的数据时,完全不清楚为什么要从刚刚设置的 cookie 中读取。 Cookie 用于将数据从一个页面加载持续到下一个页面,而不是在单个页面加载中。 【参考方案1】:

请查看文档。您将在以下链接中找到它:

https://book.cakephp.org/3.0/en/controllers/request-response.html#Cake\Http\Cookie\CookieCollection

创建 cookie

use Cake\Http\Cookie\Cookie;

$cookie = new Cookie(
    'remember_me', // name
    1, // value
    new DateTime('+1 year'), // expiration time, if applicable
    '/', // path, if applicable
    'example.com', // domain, if applicable
    false, // secure only?
    true // http only ? );

现在在 cookie 集合中添加 cookie:

use Cake\Http\Cookie\CookieCollection;
$cookies = new CookieCollection([$cookie]);//To create new collection
$cookies = $cookies->add($cookie);//to add in existing collection

现在以这种方式读取 cookie。

   $cookie = $cookies->get('remember_me');

希望你会发现它正在工作。

这里要提一个重点:cookie的写入和读取必须是两个独立的http请求。

【讨论】:

以上是关于如何在 Cakephp 3.5 中设置和获取 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xmpp android 中设置和获取状态

如何在 angular2-localstorage 中设置和获取?

如何在 Azure Synapse 或数据工厂管道中设置和获取变量值

如何在 Kendo UI MVC 的网格中设置和获取下拉列表的值?

如何在 Cake PHP 3.5 中设置模型之间的关联?

如何在Jmeter中设置和获取环境变量来测试API