【问题标题】:Codeigniter 4 cookies issue not able to setCodeigniter 4 cookie 问题无法设置
【发布时间】:2020-05-30 21:23:26
【问题描述】:

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

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

【问题讨论】:

    标签: php codeigniter-4


    【解决方案1】:

    不要使用die(),因为这样就不会设置cookie。让方法返回,以便 CI 可以输出 cookie 和标头。

    你不需要帮助器,不要加载它。

    site_url() 不会产生您应该使用的字符串。它包括协议,即https://example.com,此时您应该使用的只是“example.com”。

    您将 domainpath 参数颠倒过来,正如其他人所说,调用是对setCookie() 的调用,如

    $this->response->setCookie('forgetpwd', $token, 3600, example.com);
    

    expire 参数可以是您想要的寿命(以秒为单位)。 setCookie() 方法会为你添加time()

    我没有提供路径参数,因为您需要默认值 '/'。

    【讨论】:

    • 这项工作对我来说不涉及域 set_cookie('forgetpwd', $token,'3600');感谢您在这个问题上的努力
    【解决方案2】:

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

    在下一次加载页面之前,Cookie 不会变得可见 cookie 应该是可见的。测试 cookie 是否成功 设置,在 cookie 之前的下一个加载页面上检查 cookie 过期。过期时间通过 expires 参数设置。一个不错的方法 调试cookies的存在是通过简单地调用 print_r($_COOKIE);.

    【讨论】:

    • 好收获!我们的答案都适用! :)
    • 谢谢蒂姆你是对的。但我尝试访问另一个页面上的 cookie,该页面通过单击我在电子邮件中发送的带有令牌的链接打开以重置密码页面。我想设置相同的令牌在 cookie 中,但不会在上面的代码中设置。
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2012-02-22
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多