0

这是我设置会话的代码

$login_data = array('logged_in'=>TRUE, 'user_id'=>$userid);
$this->session->set_userdata($login_data);
redirect('dashboard');

上面的代码在我的数据库中的 ci_session 表中创建了一个新条目,并且它具有 logs_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;
4

3 回答 3

2

我已经解决了我的问题。我只是忘记在配置中更改我的 Cookie 相关变量。——</p>

于 2012-08-30T12:19:40.493 回答
0

我的第一个猜测是您在初始化类时执行的 __construct 方法中执行此操作 - 在页面甚至加载并且设置会话数据之前。

$logged_in = $this->session->userdata('logged_in');
    if(!$logged_in){
        redirect("welcome");
    }

如果您添加到页面方法的开头,它将起作用。

于 2012-08-19T15:10:34.890 回答
0

库是否正在自动加载?检查config/autoload.php

$autoload['libraries'] = array('database', 'session', 'form_validation');

$this->load->library('session');在使用课程之前立即致电。

于 2012-08-19T15:44:48.837 回答