CodeIgniter Session - 我没有在其他控制器中获取我的userdata

时间:2012-08-19 15:00:37

标签: codeigniter

这是我设置会话的代码

$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;

3 个答案:

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