我有一个包含以下列的表:
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中,但仍然不起作用。
$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
}