0

浏览器曾经成功地获得了一个 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

4 回答 4

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;

我希望它有效:-)

于 2012-04-13T09:58:56.070 回答
1

添加ob_start()在会话库之上。

ob_start();
$this->load->library('Session');

并添加ob_clean()您的会话破坏部分

$this->load->driver('cache');
$this->session->sess_destroy();
$this->cache->clean();
ob_clean();
于 2016-01-01T08:52:13.213 回答
0

通常你(过去我有)通过延长会话到期来解决(d)它,但我看到你的已经设置为一周。试着缩短一点?例如:

$config['sess_expiration'] = 8600;

或者,您可以尝试关闭加密 cookie,因为我刚刚在 CI 论坛上看到其他人已通过此方法解决了该问题:

$config['sess_encrypt_cookie'] = FALSE;

希望我有所帮助。让我知道它对你有什么好处:)

于 2014-05-08T06:47:00.373 回答
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';

希望它会帮助你。

于 2016-04-11T05:47:10.450 回答