2013-03-19 86 views
0

如何在CodeIgniter中的多用戶(admin,user)登錄應用程序中維護會話(設置會話ID,獲取會話ID)?CodeIgniter中的會話處理

我正在使用此if($this->session->userdata('logged_in') == '')。但是這不起作用。

感謝

+0

您使用如何?你能更清楚你的原始代碼嗎? – 2013-03-19 04:40:18

+1

你可以試試if($ this-> session-> userdata('logged_in'))。 – 2013-03-19 04:42:05

+0

我有兩種類型的用戶。 1.admin 2.用戶。如果我登錄的用戶,然後使用管理員的網址,然後應用程序顯示管理員也登錄。即使我用下面的代碼 \t'公共職能__construct() \t { \t \t如果($這個 - >會議 - > userdata('user_role')=='admin') \t \t { \t \t \t parent :: __ construct(); \t \t \t $ this-> load-> model('user_model'); \t \t} \t \t別的 \t \t { \t \t \t重定向( '管理員'); \t \t} \t}' 我收到錯誤這樣 ** A PHP錯誤遇到 嚴重性:注意 消息:未定義的屬性:用戶:: $會議 文件名:控制器/用戶.php 行號:6 ** – user720445 2013-03-19 04:57:35

回答

0

先看看天氣u必須加載Session庫..

如果您的驗證空白值,這段錯誤的,用這個

// to set the session data 
$this->session->set_userdata('name', 'value'); // note u can also pass array 

if(isset($this->session->userdata('name'))){ 

    //to read session data 
    $this->session->userdata('name'); // note u can also pass array 

    //to unset or delete 
    $this->session->unset_userdata('name'); 

}

+0

我有兩種類型的用戶。 1.admin 2.用戶。如果我以用戶身份登錄,然後使用admin的url,那麼顯示admin的應用程序也會被登錄。即使我使用下面的代碼public function __construct(){if($ this-> session-> userdata('user_role')= ='admin'){parent :: __ construct(); $這 - >負載>模型( 'user_model'); } else {redirect('administrator'); }}我遇到這樣的錯誤遇到PHP錯誤嚴重性:通知消息:未定義的屬性:Users :: $ session文件名:controllers/users.php行號:6 – user720445 2013-03-19 05:59:23

+0

修改了以下內容 - 不要放置類構造兩次, - 如果您定義了私有函數,即使用函數__functionName(){},則不會將它作爲公共前綴。 功能someOtherMeaningfullFunctionName(){ \t如果($這 - >會話級>用戶數據( 'USER_ROLE')== '管理員'){ \t \t $這 - >負載>模型( 'user_model'); \t} else { \t \t redirect('administrator'); \t} } – 2013-03-25 05:30:19

0

如果您之前已定義您的會話,如

$this->session->set_userdata('logged_in', 'value'); 

然後檢查會話是否設置正確,

if(isset($this->session->userdata('logged_in')) { 

     if($this->session->userdata('logged_in') == '') { 
      // Your Code 
     } 
} 

如果上述isset()回報,那麼你的會話設置不正確。檢查一下。

0

請加載會議庫

根據你自動加載會議庫與否,我們將需要包括:

$this->load->library('session'); 

那麼你應該能夠使用:

$this->session->set_userdata('logged_in', 'some_value'); 

並檢查會話是否設置僅使用

if($this->session->userdata('logged_in')){ 
     //code for logged in 
    } 

如果仍然沒有通過清除瀏覽器緩存

我希望這將有助於工作,請試試!

3

試試這個

if ($this->session->userdata('logged_in')!=FALSE) { 

     print_r($this->session->all_userdata()); 
    } 

,這樣你們可以找到當前用戶數據

0

首先,你必須檢查你正在嘗試檢索會話項是否存在,然後把它比作你想要的值至。 試試這個:

if($this->session->userdata("logged_in") !== FALSE){ 
    if($this->session->userdata("logged_in") == "admin"){ 
     //logged in as admin 
    }elseif($this->session->userdata("logged_in") == "user"){ 
     //logged in as user 
    } 
} 

還有一件事,在

parent::__constructor(); 

行應該是在你的構造函數代碼的第一行,否則,你會體驗到很多的錯誤後面的代碼