2011-12-13 41 views
1

沒有存儲任何數據,我有一個表有以下欄目:爲什麼我的日誌系統使用CI會話不允許我找回我在數據庫

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,但仍然無法使用。

這是我的PHP腳本:

$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 

注:
我是新來的笨。

回答

2

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 
} 
+0

我跟着你仔細幾步之遙,但還是同樣的結果'is_logged'和'id'是'NULL'。 –

+0

我編輯我的問題,我嘗試添加'is_logged'和'id'作爲數據庫字段,這是錯誤的。之後,我嘗試使用它們作爲會話變量,並且仍然沒有工作,只要我嘗試檢索它們,我什麼也得不到。 –

+1

贊成答案swatkins!謝謝!!!你幫助我了!你的答案應該是綠色的! –

相關問題