为什么我使用CI会话的登录系统不允许我检索我存储在数据库中的任何数据


Why my log in system using CI sessions doesn't allow me retrieve any data that i did store in database

我有一个包含以下列的表:

session_id       varchar(40)    No      0        
ip_address       varchar(16)    No      0        
user_agent       varchar(50)    No           
last_activity    int(10)        No      0        
user_data        text           No           

我试图获得我创建的会话,但它没有返回任何值。
我还试图创建它们作为数据库字段,这也是错误的。
我也试过将它们保存在cookie中,而不是保存在DB中,但仍然不起作用。

这是我的PHP脚本:
$user_data = array(
                'id' => $row->id,
                'is_logged' => TRUE
            );
$this->session->set_userdata($user_data);

我试着用这个来检索它:

$this->session->userdata('is_logged');/is_logged is an example

注意:
我是新来的Codeigniter

CI会话类将允许您在数据库中存储会话(注意,这并不否定cookie的使用,只是在需要验证会话ID的情况下为安全性添加了额外的持久性层)。下面是创建会话表的sql语句。

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

然后,您需要告诉CI将数据库用于会话数据:

// in /application/config.php
$config['sess_use_database'] = TRUE;
// and what the name of the db table is
$config['sess_table_name'] = 'ci_sessions';

然后,当你登录你的用户时,你会添加详细信息到他们的会话数据:

$this->session->set_userdata('id', $user_id);
$this->session->set_userdata('username', $username);
$this->session->set_userdata('email', $email);
$this->session->set_userdata('isLogged', TRUE);

这是你用来查看某人是否有权访问一个页面或资源的。

if ($this->session->userdata('isLogged') === TRUE)
{
    // show page
}
else
{
    // show access error
}