且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

CodeIgniter会话类在Chrome中不起作用

更新时间:2023-02-06 11:39:33

我也面临这种情况,将会话到期时间增加到一天。



UPDATE



它通过延长会话到期来工作?





此问题的发生是由于用户和web服务器位置的时区之间的差异,例如我住在巴基斯坦比美国时区提前10小时,我的服务器在美国。我请求页面在17/10/2012 14:00在巴基斯坦时间。在美国的时间是17/10/2012 4:00,因为web服务器在美国和会话过期设置为2小时由服务器发送的cookie设置为到期在17/10/2012 6:00。现在浏览器与您的本地pc时间互动,它获取时间17/10/2012 14:00因此它删除cookie或您的cookie总是刷新您的请求。因此,它***设置会话到期1天,因为最大的时区差异是新西兰和美国之间17小时(我不知道差异可能是我错了)。因此,您的Cookie至少会保持活动7小时


I have created a login system in codeigniter project, which is working fine in Firefox but doesn't work in Chrome, data fetch and set for session but when this code redirect control to admin/dashboard, there we check session data again. If session data not exist then the code will redirect user to login again............ My code is below, and i don't know what is wrong with this session/cookies in codeigniter.?

        $data = array(
             'user_id' => $user->id,
             'name' => $user->name,
             'user_type' => $user->type,
             'username' => $user->username,
             'is_logged_in' => true
        );

        $this->session->set_userdata($data);
        //echo "user ".$this->session->userdata("username"); exit;
        redirect("admin/dashboard", "location"); 

I have search alot for but no one work in this situation, like a change "cookie_domain" in config file but nothing happened....

I have also faced this situation and fixed it by increasing session expiry to one day.

UPDATE

Why it works by extending session expiry?


This problem occurs due to difference between timezones of user and webserver location e.g. I live in Pakistan which is 10 hours ahead of US timezone and my server is in US. I request the page at 17/10/2012 14:00 at Pakistan time. The time in US is 17/10/2012 4:00 since webserver is in US and session expiry is set to 2 hours the cookie sent by server is set to expire at 17/10/2012 6:00. Now browser interacts with your local pc time and it gets time 17/10/2012 14:00 therefore it deletes the cookie or your cookie always refreshed on your request. Therefore its best to set session expiry to 1 day because the largest timezone difference is 17 hours between new zealand and US (i am not sure about difference may be i am wrong). So your cookie will at least keep alive for 7 hours