这是我设置会话的代码
$login_data = array('logged_in'=>TRUE, 'user_id'=>$userid);
$this->session->set_userdata($login_data);
redirect('dashboard');
上面的代码在我的数据库中的ci_session表中创建了一个新条目,并且它具有logged_in值
在仪表板控制器中,我正在检查会话。下面是我在仪表板控制器中的代码
function __construct(){
parent::__construct();
$logged_in = $this->session->userdata('logged_in');
if(!$logged_in){
redirect("welcome");
}
}
在上面的构造函数块中,我没有得到logged_in的值。
我还尝试使用var_dump($this->session->all_userdata)
打印所有用户数据,但我得到的只是一个空字符串。
请告诉我可能是什么原因。我还搜索了cookie,但我没有在我的电脑中找到它。下面是我的配置详情
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
答案 0 :(得分:2)
我已经解决了我的问题。我忘了在配置中更改我的Cookie相关变量。 -
答案 1 :(得分:0)
我的第一个猜测是你正在__construct方法中执行此操作,该方法在初始化类时执行 - 在页面加载和会话数据设置之前执行。
$logged_in = $this->session->userdata('logged_in');
if(!$logged_in){
redirect("welcome");
}
如果您在页面方法的开头添加,则会有效。
答案 2 :(得分:0)
库是自动加载的吗?检查config/autoload.php
:
$autoload['libraries'] = array('database', 'session', 'form_validation');
或者在使用课程之前立即致电$this->load->library('session');
。