Codeigniter 4 cookie问题无法设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter 4 cookie问题无法设置相关的知识,希望对你有一定的参考价值。

这是我的控制器代码。我无法在Codeigniter 4中设置和获取Cookie。

helper('cookie');
$this->response->set_cookie('forgetpwd',$token, time() + (3600),"/",site_url());
print_r($this->request->get_cookie('forgetpwd'));
die();
答案

php.net-https://www.php.net/manual/en/function.setcookie.php

Cookie只有在下一次加载该cookie应该是可见的。测试cookie是否成功设置后,在Cookie之前的下一个加载页面上检查Cookie到期。过期时间是通过expires参数设置的。一个很好的方法通过简单地调用来调试cookie的存在print_r($ _ COOKIE);。

另一答案

来自文档的AFAICT,set_cookie() is a helper

此帮助器函数为您提供了更友好的语法来设置浏览器cookie。 [...]此函数是Response :: setCookie()的别名。

这意味着您可以像这样使用它:

set_cookie()

如果要直接使用响应,则不需要帮助器。在这种情况下,方法名称为helper('cookie'); set_cookie('forgetpwd',$token, time() + (3600),"/",site_url()); 。在这种情况下,您可以执行以下操作:

setCookie()
另一答案

请勿使用setCookie(),因为那样将不会设置cookie。让该方法返回,以便CI可以输出cookie和标头。

您不需要帮助程序,请不要加载它。

// No need for helper('cookie') if you are using response directly $response->setCookie($name, $value, $expire, $domain, $path, $prefix, $secure, $httponly); 不会产生您应该使用的字符串。它包含协议,即die(),您只需要使用“ example.com”。

您颠倒了[[domain和path自变量,并且正如其他人所说的那样,该呼叫是对site_url()的]]https://example.com

expire

参数可以是您想要的寿命(以秒为单位)。 setCookie()方法将为您添加$this->response->setCookie('forgetpwd', $token, 3600, example.com); 我不提供路径参数,因为您需要默认值'/'。

以上是关于Codeigniter 4 cookie问题无法设置的主要内容,如果未能解决你的问题,请参考以下文章

在我的 CodeIgniter 助手中获取 cookie 值

CodeIgniter:cookies、会话、太多重定向?

在 codeigniter 中使用 HTTPOnly 标志设置 cookie

如何在codeigniter上删除cookie

Codeigniter在nodejs中读取会话cookie

CodeIgniter 如何知道 cookie 保存了有效的会话数据?