2011-06-03 78 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