浏览器已成功获得一次cookie(如何?何时?我真的无法分辨。我只能在某个时间告诉我,我意识到我的网站在Chrome中不再有效)。现在,chrome在开发工具中不断显示:“此站点没有cookie”。
它在explorer / firefox / safari等中运行良好......
由于CI会话库使用cookie而我的所有页面都使用会话库,我真的需要解决这个问题。
这是我的配置(数据库表存在,有效,通常cookie已加密)
$config['sess_cookie_name'] = '[mydomain]sessions';
$config['sess_expiration'] = 60*60*24*7; // one week
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = '[mydomain]sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 300;
这是cookie配置
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "[mydomain.com]";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
当用户登录时,它会:
$query = $this->db->get_where('user', array('id' => $logged_in_user_id));
$row = $query->row();
$this->session->set_userdata('user_id', $row->user_id);
redirect(base_url(), 'location');
当用户退出时,它会:
$this->session->sess_destroy();
redirect(base_url(), 'location');
这很简单,我想这应该是这样做的?任何想法为什么它在chrome中不起作用但在firefox / explorer / safari中完美运行?
答案 0 :(得分:1)
尝试在此行中添加一个点:
$config['cookie_domain'] = ".[mydomain.com]";
我的配置是相同的,它适用于谷歌浏览器,但我有这些不同:
$config['sess_expiration'] = 86400;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
我希望它有效: - )
答案 1 :(得分:0)
通常你(我过去)通过延长会话到期来解决(d)但是我看到你的已经设置为一周了。试着缩短它? 例如:
$config['sess_expiration'] = 8600;
或者,您可以尝试关闭加密cookie,因为我刚刚在CI论坛上阅读过其他人通过此方法解决了问题:
$config['sess_encrypt_cookie'] = FALSE;
希望我能帮到你。让我知道它是怎么回事:))
答案 2 :(得分:0)
在会话库的顶部添加ob_start()
。
ob_start();
$this->load->library('Session');
在会话中添加ob_clean()
销毁部分
$this->load->driver('cache');
$this->session->sess_destroy();
$this->cache->clean();
ob_clean();
答案 3 :(得分:0)
转到配置如果您在本地系统上使用,请替换它:
$config['cookie_prefix'] = 'your_prefix';
$config['cookie_domain'] = 'localhost';
$config['cookie_path'] = '/folder_name/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
或者如果您在服务器上使用它,只需将其替换为:
$config['cookie_domain'] = 'localhost';
to
$config['cookie_domain'] = '.localhost';
希望它会对你有所帮助。