【问题标题】:Can't set cookie inside construct in codeigniter无法在 codeigniter 中的构造内设置 cookie
【发布时间】:2012-02-22 13:56:05
【问题描述】:

如果null,我尝试设置一个 cookie,但我无法让它工作:

public function __construct()
{
    parent::__construct();
    if ($this->input->cookie('ff', TRUE) == FALSE)
    {
        $this->input->set_cookie('ff', 'on', 86500);
        dump($this->input->cookie('ff', TRUE));
    }
}

我做错了什么?

编辑: dump() 只是自定义调试功能。

【问题讨论】:

  • dump() 是做什么的?在将其他任何内容发送到浏览器之前,需要设置 Cookie,因为它们位于响应标头中。 php.net/manual/en/function.setcookie.php
  • dump 是自定义调试功能。那么如果为空,如何在 codeigniter 中正确设置 cookie?
  • 您可以使用多种方式进行调试,而不会影响设置标头的能力。您可以将 Firebug 与 FirePHP 一起使用,使用mail() 将输出通过电子邮件发送给自己,或者写入日志文件或使用 PHP 输出缓冲。此外,在这种情况下,您可以在设置 cookie 后拨打dump() 的电话。
  • dump() 函数不是问题,我已经尝试了各种方法...... cookie 就是无法设置。在构造中设置cookie时应该没有问题,对吧?

标签: php codeigniter cookies constructor setcookie


【解决方案1】:

您的 set_cookie 调用可能失败的几个原因:

1) 当调用 set_cookie 时,您已经向浏览器输出了一些内容,在这种情况下,您可能会收到一条错误/通知,类似于“标头已发送”。要解决这个问题,只需确保在向浏览器发送任何内容之前发生 set_cookie 调用。

2) 如果您正在进行本地开发和测试,“localhost”不被视为有效域,因此不会为其保存任何 cookie。一种解决方法是在您的主机文件中添加一个条目,例如:

localhost.dev    127.0.0.1

然后使用该域进行测试,而不是“localhost”。

【讨论】:

    猜你喜欢
    • 2018-03-28
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多