我有以下代码:
$session_data = array(
'user_id' => $user_id,
'username' => $username,
'group_id' => $group_id,
'logged_in' => TRUE
);
$this->session->set_userdata($session_data);
user_id和logged_in完美地存储在db中,但username和group_id存储为“N”。系统的结构是“模块化的”,在我的旧应用程序中,仅仅MVC就可以正常工作。
之前有没有人遇到这个问题,如果你这样做了,你可以提供一些帮助吗?
编辑: 所有N值都是问题,而应该是每个数据的实际值
下面是数据库中的user_data字段
a:5:{s:9:"user_data";
s:0:"";s:7:"user_id";N;
s:8:"username";N;
s:5:"group";N;
s:9:"logged_in";b:1;}
答案 0 :(得分:0)
您需要在会话中启用保存数据。
$ config ['sess_use_database'] = TRUE;
在数据库中创建表格ans也为表格提供相同的名称,因为它在config.php中设置
CREATE TABLE IF NOT NOT EXISTS ci_sessions
(
session_id varchar(40)DEFAULT'0'NOT NULL,
ip_address varchar(45)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
)
);
然后,无论何时使用会话,codeigniter都会在数据库上进行中继,您可以根据需要设置“user_data”字段。也许,将序列化数据并保存在“user_data”字段中会很好。
在php会话或cookie中保存数据有一定的局限性。
答案 1 :(得分:0)
我修好了。这与CI会话库无关,我在数据库查询中出错:(
对由此造成的任何不便表示歉心