2011-06-03 77 views
1

为我的web创建身份验证(目前即时将codeigniter用作我的php框架)。在codeigniter中使用sess_use_database时会话数据消失

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

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

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

任何人都会遇到这个问题?我该如何解决这个问题?

回答

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

+0

我设置该表以及$ config ['sess_table_name'] ='ci_sessions'; 问题是当我设置$ config ['sess_use_database'] = TRUE;会话数据不会显示,但是当我将它设置为FALSE时。它会再次显示 – nhoyti 2011-06-03 06:00:52

+0

“ci_session”表中的数据是否存在? – Pav 2011-06-03 06:01:50

+0

你的意思是“ci_session表中的数据是什么?”对不起,请您重新说明您的问题吗?谢谢 – nhoyti 2011-06-03 06:11:08

2

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

具体USER_AGENT的规模已经从varchar 50去为varchar 120请确保您使用,如果你使用的是笨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

+0

这正是我将项目升级到Code Igniter 2后所遇到的问题 – acSlater 2012-08-16 14:19:44