2014-10-12 33 views
0

我試圖使用codeigniter會話來存儲ajax調用之間的狀態。 在其中一個網址,我設置使用

$this->session->set_userdata("user", "harry"); 

會話,但是當我試圖從另一個URL訪問值「用戶」,我越來越假

$this->session->userdata("user"); 

返回false 。

我在這裏做錯了什麼?我知道會話正在第一個URL中設置,因爲我可以在此之後立即回顯該值。

回答

0

Sessions會在每個頁面載入後開始運行,所以 會話類必須要麼在控制器初始化 構造,也可以由系統自動加載

如果你不自動加載會話庫,將其初始化爲其他控制器將繼承的自定義控制器,例如MY_Controller。否則,您需要在每個控制器__construct()中加載會話庫。

class MY_Controller extends CI_Controller 
{ 
    public $currentUser = NULL; 

    public function __construct() 
    { 
     if(is_null($this->currentUser)) 
      $this->_checkUserHasLoggedIn(); 
    } 

    protected function _checkUserHasLoggedIn() 
    { 
     // $this->session->set_userdata(array('uid'=>'0')) 
     // This would only be set if a user is logged In 
     // via a Authentication library 

     if($this->session->userdata('uid') && $this->session->userdata('uid') !== 0) 
     { 
      $this->currentUser = new StdClass(); 
      $this->currentUser->ID = $this->session->userdata('uid'); 
      $this->currentUser->Group = $this->session->userdata('group'); 
      $this->currentUser->Name= $this->session->userdata('name'); 
     } 

     return; 

    } 
}