在问这个问题之前,我已经在这里和谷歌上搜索过了,我发现这是一个很受欢迎的问题,但我找到的答案我已经尝试过了,但我仍然失败了。
这是我设置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', '/');当我尝试对‘$ var_dump ->input->cookie()`输入时,我得到了bool false作为输出,这意味着找不到cookie。这是我第一次尝试在CI中使用cookies,所以目前这个问题超出了我的能力范围。
还请注意,我将上面示例中的真实域更改为example.com,因为我现在不希望该域出现在搜索中。
发布于 2012-06-27 03:23:07
为Claritiy __编辑的__ ,2013年10月3日
好了,我找出了我的问题所在,我相信这也会对新手有所帮助。所以,当你最初设置你的application/config/config.php
你会发现一行代码:
$config['cookie_prefix'] = "";虽然这个设置给人的印象是可选的,但事实证明它是一个更多的要求。似乎有一个bug,它并不总是可重现的,所以很难追踪是什么和为什么。底线是,如果没有设置这个配置项。在很多情况下,当cookie正在放置/获取时,它会在引擎盖下静静地破裂。给你留下的印象是当它不工作的时候,它是工作的。
想象一下这有多令人沮丧。无论如何,我对原始问题的解决方法是设置上面提到的前缀行。任何事情都可以,程序员可以选择。
无论如何,对于那些想要设置它的人来说,值得一提。当您设置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的实际值。
发布于 2012-06-26 18:47:49
仅供参考,您不能从具有不同名称的域(HTTP_HOST)中为域“example.com”设置cookies。这是一个安全问题,浏览器会忽略它。检查mozilla firebug 'NET‘选项卡的响应头,如果cookie存在,并且没有设置,那么我是正确的。
其次,设置cookie后,它将在服务器(php)上可用,只在下一个请求中可用,因为当前的$_COOKIE仍然没有更新。如果CI以不同的方式实现了这一点,那么这就是概念的错误实现。
发布于 2012-06-26 22:38:19
我建议使用CodeIgniter的Session类。
http://codeigniter.com/user_guide/libraries/sessions.html
https://stackoverflow.com/questions/11205307
复制相似问题