2010-07-13 32 views

回答

3

您的驗證檢查應在庫:

的是從一個基本的codigniter authentcation腳本摘錄:命名後的文件名

class Site_sentry 
{ 
    function Site_sentry() 
    { 
     $this->obj =& get_instance(); 
    } 

function is_logged_in() 
{ 
    if ($this->obj->session) 
    { 
     if ($this->obj->session->userdata('session_logged_in')) 
     { 
      return TRUE; 
     } 
     else 
     { 
      return FALSE; 
     } 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

    function login_routine() 
    { 
    //do login here (enter into session) 
    } 
} 

此庫存儲在應用程序/庫它的類與.php後綴。

然後你就可以添加到您的自動加載配置文件應用/ conig/config.php文件

$autoload['libraries'] = array('database', 'site_sentry', 'session'); 

或在每個控制器手動加載:

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

然後你就可以從控制器中檢查您的會話,如下所示:

class Class extends Controller{ 

    function Class() 
    { 
     parent::Controller(); 
     if($this->site_sentry->is_logged_in() == FALSE){ 
      redirect('managerlogin/'); 
     } 

    } 
    } 

另請參閱本文檔頁面http://codeigniter.com/user_guide/libraries/sessions.html;特別感興趣的是將會話存儲到數據庫部分。

+0

非常感謝你 – Saqueib 2010-07-13 10:17:31

0

我不認爲與類做是最好的主意的第一個項目。如果用戶登錄,您應該檢查session內的標誌(值或其他),因此您不需要與其他控制器一起工作。

優點是可以更容易地訪問會話,這是更常見的方法。

+0

如果有人downvotes,至少說爲什麼... – DrColossos 2010-07-13 07:19:58

0

實例與會話:

class SomeClass extends Controller { 

function __construct() 
{ 
    parent::Controller(); 
    $this->is_logged_in(); 
} 

function is_logged_in() 
{ 

    $is_logged_in = $this->session->userdata('is_logged_in'); 
    if(!isset($is_logged_in) || $is_logged_in != TRUE) 
    { 
     redirect('login'); 
    } 
} 
相關問題