我对(最新的)Codeigniter有一个奇怪的问题。我使用会话类进行登录。 登录后,我在会话中存储了一些用户数据。
我在本地开发了我的应用程序,登录工作正常。申请完成后,我将其上传到我的网络服务器http://mijn.exova.nl/。该应用程序正常工作一天。但 一天后,登录后不会存储会话。我从本地再次上传了代码,但问题仍然存在。在重定向之前,会话仍然存在。重定向后,会话为空。
代码:
配置设置会话(默认设置)
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
创建会话(在库中)
$this->CI->session->set_userdata('exova_login', true);
$this->CI->session->set_userdata('exova_userdata', $userdata);
$this->CI->session->set_userdata('exova_rollen', $rollen);
$this->CI->session->set_userdata('exova_school', $school);
重定向(会话为oke,会话为空后)
redirect(base_url());
有人知道为什么会出现这个问题吗?谢谢!
答案 0 :(得分:0)
再次有效!确切的问题是未知的,但当我删除所有浏览器数据时,它再次工作。我了解到设置会话不是两次非常重要。我通过添加以下内容解决了这个问题:
if($this->CI->session->userdata('exova_login') == false){
围绕会话集。会话永远不会被设置两次,这确保可以避免这样的问题。感谢您的评论。