CodeIgniter设置cookie,不设置cookie

时间:2012-06-26 10:25:19

标签: php codeigniter

我在这里和谷歌上搜索过,然后才问这个原因我看到它是一个很受欢迎的问题,但是我发现我已经尝试了答案,但我仍然失败了。

这是我尝试设置cookie(注意帮助程序是自动加载的)

$longlife = 60*60*24*60; //60 days
$shortlife = 60*60*24*10; //10 days
$this->input->set_cookie('AutoRemember', $user.'::'.$hashbrown, $shortlife, '.example.com', '/');
$this->input->set_cookie('LongRemember', $user.'::'.$hashbrown, $longlife, '.example.com', '/');

当我尝试在'$ this->输入> cookie()时执行var_dump时,我得到bool false作为输出,这意味着没有找到cookie。这是我第一次尝试使用带有CI的cookie,所以此问题暂时无法解决。

另请注意,我将上述示例中的真实域名更改为example.com,因为我不希望域名立即出现在搜索中。

4 个答案:

答案 0 :(得分:2)

__ 2013年10月3日编辑Claritiy __

好吧,我弄清楚我的问题是什么,我相信这也将有助于新来的人。因此,当您最初设置application/config/config.php

你会找到一行:

$config['cookie_prefix']    = "";

在给定印象的情况下,此设置是可选的,因为它更多的是需求。似乎有一个错误,其中并不总是可重现,因此很难跟踪什么和为什么。但是,如果未设置此配置项,则为底线。在少数情况下,当饼干设置/获取它时,它将在引擎盖下静静地打破。让你觉得它不工作的印象。

想象一下可能会有多么令人沮丧。无论如何,我对原始问题的修复是设置上面提到的前缀行。任何事都可以,编码选择。

无论如何,值得一提的是那些打算设置它的人。设置cookie时,按照文档/指南正常进行。

$this-input->set_cookie('myCookie');

但是,我注意到文档没有指定(或者我没有检查过)是你设置的前缀

$config['cookie_prefix']    = "cmh_";//example
当你打电话给它时,

不会得到你的cookie值,就像人们认为他们应该做的那样,即:

$this->input->cookie('myCookie');

像这样调出值很可能会导致屏幕上看不到任何内容。例如,如果您执行了var_dump()。你会得到bool(false)。换句话说,它意味着找不到您引用的cookie。这是真的。它不能不存在,记住你设置一个前缀。要获得您的cookie,您需要执行类似

的操作
$this->input->cookie('cmh_myCookie');

将打印出cookie的实际值。

答案 1 :(得分:0)

仅供参考,您无法在域名(HTTP_HOST)中为域名“example.com”设置Cookie,其名称与“yoursite.com”不同。这是安全问题,浏览器会忽略它。使用mozilla firebug'NET'选项卡检查响应标头,如果cookie存在但未设置,那么我是对的。

其次,在设置cookie之后,它将在服务器(php)上可用,仅在下一个请求中,因为当前的$ _COOKIE仍未更新。如果CI以不同的方式实现,这是错误的概念实现。

答案 2 :(得分:0)

我建议改用CodeIgniter的会话类。

http://codeigniter.com/user_guide/libraries/sessions.html

答案 3 :(得分:-1)

来自文档:

This function is identical to the post function, only it fetches cookie data:
$this->input->cookie('some_data', TRUE);

嗯,正如这表明的那样,您需要添加cookie的名称才能获得它。尝试输出$this->input->cookie('AutoRemember')