CodeIgniter:会话在谷歌浏览器中不起作用

时间:2012-04-12 21:05:03

标签: php codeigniter session cookies

浏览器已成功获得一次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中完美运行?

4 个答案:

答案 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';

希望它会对你有所帮助。