在codeigniter中使用sess_use_database时,会话数据消失

时间:2011-06-03 05:55:33

标签: php session codeigniter

我为我的网站创建了一个身份验证(目前我使用codeigniter作为我的php框架)。

为什么我在$config['sess_use_database'] = TRUE;

中设置 TRUE

我的会话数据消失,并且不会显示在页面的一部分中。我试图显示登录该网站的人的用户名。

当页面中显示$config['sess_use_database'] = FALSE;用户名时。

有谁遇到过这个问题?我怎么解决这个问题?

2 个答案:

答案 0 :(得分:2)

在CodeIgniter 2中,ci_sessions表需要略有不同。

具体来说,user_agent的大小已从varchar 50变为varchar 120.如果使用CodeIgniter 2并将sess_use_database设置为TRUE,请确保使用此基本原型:

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`)
);

通过http://codeigniter.com/user_guide/libraries/sessions.html

答案 1 :(得分:0)

您需要创建数据库表来存储会话数据:

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(50) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text DEFAULT '' NOT NULL,
PRIMARY KEY (session_id)
);

然后设置$config['sess_table_name'] = 'ci_sessions';

http://codeigniter.com/user_guide/libraries/sessions.html