2013-07-31 53 views
1

我正在創建一個應用程序,用戶必須登錄才能訪問各種模塊。我需要檢查用戶會話是否存在,然後才能訪問每個模塊。如何在codeigniter中創建一個用於檢查會話是否存在的公共函數?

現在我正在檢查每個功能/模塊/控制器中的會話,以避免未經授權的訪問。

if($this->session->userdata('userId')!=''){ 
    do something; } 

有沒有更好的方法來做到這一點?我能有類似像

sessionExist(); 

,使得它可以從任何模塊/控制器被稱爲通用函數/函數,它是常見的整個項目?

如果是這樣,我應該在哪裏編寫這個常用函數,以便它可以從任何地方調用。

+0

如果你有類,每一個方法需要登錄 - 那麼你可以把日誌檢查在構造函數中。更乾淨。 – cartalot

回答

3

你想一個輔助功能,那就是:

if (! function_exists('sessionExist')) 
{ 
    function sessionExist(){ 
     $CI =& get_instance(); 
     return (bool) $CI->session->userdata('userId'); 
    } 
} 

保存在application/helpers/文件,包括它的application/config/autoload.php文件:

$autoload['helper'] = array('my_helper_file'); 
1

您可以創建庫您創建它或其他圖書館

前一個功能:application/libraries/Common.php

public function logged_in() 
{  
    return (bool) $this->session->userdata('userId'); 
} 

使用這樣的:

if ($this->common->logged_in()) { 
    // User logged 
} else { 
    // User not logged 
} 
4

如果它的類,然後創建library 。如果只有功能然後創建helper,然後autoload他們,所以它可以稱爲anywhare。

+0

我同意你的想法! +1來自我! –

0

在模型中,您可以設置您的會話:

$data = array(
     'sid' =>$this->input->post('sid'), 
     'is_logged_in' => true, 
    ); 
    $this->session->set_userdata($data); 

而在你的功能/模塊/控制器:

function __construct(){ 
    $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) 
    { 
     echo 'You dont have permission to acces this page'; 
     die(); 
    } 
0
 
if (! function_exists('sessionExist'))
{
function sessionExist(){
$CI =& get_instance();
$userId = $CI->session->userdata('userId');
if(empty($userId)){
redirect(base_url('login'));
}else{
return (bool)$userId;
}
}
}
相關問題