2012-01-30 73 views
0

我试图设置,如果null一个cookie里面构造,但我不能得到它的工作:不能设置cookie的CI中

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()它只是一个自定义的调试功能。

+0

'dump()'做了什么? Cookie在发送到浏览器之前需要设置,因为它们在响应头中。 http://php.net/manual/en/function.setcookie.php – Treffynnon 2012-01-30 19:37:39

+0

转储是一个自定义调试功能。那么如何在codeigniter中正确设置cookie是否为空? – Alex 2012-01-30 19:39:03

+0

您可以使用多种方式进行调试,而不会影响设置标题的能力。您可以将Firebug与FirePHP一起使用,使用'mail()'发送自己的输出或写入日志文件或使用PHP输出缓冲。此外,在这种情况下,您可以在设置cookie后将您的电话转到'dump()'。 – Treffynnon 2012-01-30 19:42:14

回答

2

几个原因你set_cookie通话可能会失败:

1)您所输出的东西已经在set_cookie被称为浏览器,在这种情况下,你可能会沿着“接头连接线得到一个错误/通知已经发送”。要解决这个问题,只需确保在向浏览器发送任何内容之前调用set_cookie。

2)如果你正在做本地开发和测试,“localhost”的不被视为一个有效的领域,所以没有饼干将被保存它。一种解决方法是在你的hosts文件中添加一个条目,例如:

localhost.dev 127.0.0.1 

然后进行测试,而不是“本地主机”与该域。