如何在 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 angular2-localstorage 中设置和获取?
如何在 Azure Synapse 或数据工厂管道中设置和获取变量值