用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3417|回复: 5
收起左侧

[HELP] 关于cookie的问题 求解惑

[复制链接]
发表于 2012-9-20 14:08:51 | 显示全部楼层 |阅读模式
在登录界面使用cookie,两个记录,一个islogin一个userid,结果islogin正常,userid老是出问题,请大家看下:

控制器里的登录函数
function _login($userid = '')
{
     set_cookie('islogin',1,3600);
     set_cookie('userid',$userid,3600);
}
退出函数
function _loginout($userid = '')
{
     delete_cookie('islogin');
  delete_cookie('userid');
}
整个控制器只有一处设置cookie,一处删除cookie,但每次没退出userid就没了,只剩islogin
 楼主| 发表于 2012-10-8 15:04:21 | 显示全部楼层
结果发现,两个set_cookie同时使用时,查看cookie文件只有第一个有记录,这是为啥??不能这样写吗??
 楼主| 发表于 2012-10-8 17:09:04 | 显示全部楼层
好吧 又发现实际是这样: 在执行登录之后,写入cookie,两个都成功,但登陆后跳转到首页的时候,cookie文件中的islogin的值还在,userid的值没有了~是什么原因呢?两者都在一起的啊~
 楼主| 发表于 2012-10-8 17:32:30 | 显示全部楼层
顺便贴出首页和构造函数,登陆后跳转首页时cookie内的userid值就没了~

class Start extends CI_Controller {

        public $siteTitle = "网站标题";
        public $keyWords = "关键字";
        public $description = "网站描述";
        public $islogin;
        public $userid;
        public $array_user = array();
       
        function __construct()
        {
                parent::__construct();
                $this->load->helper(array('form', 'url', 'cookie'));
                $this->islogin = get_cookie('islogin',TRUE);
                if($this->islogin)
                {
                        $this->load->model('user_model');
                        $this->userid = get_cookie('userid',TRUE);
                        $this->array_user = $this->user_model->user_get($this->userid)->row_array();
                }
        }
       
        public function index()//首页
        {
                $viewdata['siteTitle'] = $this->siteTitle;
                $viewdata['keyWords'] = $this->keyWords;
                $viewdata['description'] = $this->description;
               
                $viewdata['siteHead'] = $this->siteHead();
                $viewdata['siteFoot'] = $this->siteFoot();
               
                $vd['islogin'] = $this->islogin;
                $vd['array_user'] = $this->array_user;
                $viewdata['loginblock'] = $this->load->view('loginblock',$vd, true);
                $this->load->view('index',$viewdata);
        }
 楼主| 发表于 2012-10-9 11:58:15 | 显示全部楼层
在线等啊...
 楼主| 发表于 2012-10-16 14:54:32 | 显示全部楼层
我把此处改了下
function __construct()
        {
                parent::__construct();
                $this->load->helper(array('form', 'url', 'cookie'));
                $this->islogin = get_cookie('islogin',TRUE);
                $this->userid = get_cookie('userid',TRUE);//把原来下面注释那句放到这
                if($this->islogin)
                {
                        $this->load->model('user_model');
                        //$this->userid = get_cookie('userid',TRUE);
                        $this->array_user = $this->user_model->user_get($this->userid)->row_array();
                }
        }
这样的话不会出现这种情况,可是问题又来了。设置的是3600,结果几分钟后islogin的cookie记录还在,userid的又没了???哪个大神来说说到底神马情况??是不是我服务器配置出问题了??

本版积分规则