2017-01-23 34 views
1

我的MY_Controller位於我的核心文件夾上。Codeigniter 3 MY_Controller

<?php 
class MY_Controller extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function is_logged_in($data){  
     $session = $this->session->userdata(); 
     if($session['isloggedin']['username'] == ''){ 
     return isset($session); 
     }else{ 
     return FALSE;} 
    } 
} 
?> 

我很確定我複製粘貼上面的代碼從一些教程,我沒有得到編輯它根據我的需要。

任何情況下,我有問題。

所以我有一個頁面控制器將負責根據登錄用戶的account_type訪問某些視圖。

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class pages extends MY_Controller { 


}?> 

這是我的會議時英寸

$new_session = array('username' => $this->input->post('username'), 
          'email' => $this->input->post('email'), 
          'type' => $this->input->post('type'), 
          'logged_in' => TRUE); 
    $this->session->set_userdata($new_session); 

用戶登錄如何從頁面控制器調用MY_controller功能is_logged_in()或者是「延伸MY_Controller」也自動調用該函數is_logged_in()或我必須基本上只是把它放在__construct所以它會自動調用函數?

此外,如何檢查用戶是否已登錄並查看其詳細信息?

我是否將session_data從我的控制器傳遞給MY_Controller?如果是這樣,怎麼樣?

或者我應該只在is_logged_in()函數中加入$this->session->userdata();行?

P.S.我曾嘗試使用身份驗證庫,但他們包括太多我需要的,我只需要一個基本的身份驗證。有什麼建議麼?現在仍然維持。

回答

2

您可以直接從您的頁面控制器調用is_logged_in()函數。就像這樣:

Pages.php

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Pages extends MY_Controller { 
    function __construct() { 
     parent::__construct(); // this will trigger the __construct() of MY_Controller 
    } 

} 

MY_Controller.php

<?php 
class MY_Controller extends CI_Controller{ 
    public function __construct() { 
     parent::__construct(); 
     if($this->is_logged_in()) { 
     // do something if user is allowed to access. 
     } 
     else { 
     // do something if user is not allowed to access 
     } 

    } 
} 
+0

哦,這樣的擴展意味着我可以叫我的控制器的功能? 我的印象是,每當我加載頁面控制器它會自動加載MY_controller。猜猜我錯了。 –

+0

我的is_logged_in功能正常嗎?因爲我覺得它有很多的冗餘,比如$ data參數,爲什麼要傳遞$ data來檢查真實性,如果我可以在函數本身中使用$ session-> userdata()? 另外如果和isset, –