2012-02-19 181 views
4

我想有一個類來檢查我指定的所有控制器上的登錄。 笨的版本是2.1.0,我有PHP 5.3.10Codeigniter擴展核心類

海爾是我將如何設置它: 我看http://ellislab.com/codeigniter/user_guide/general/core_classes.html ,我把它像這樣: 在/應用/核心/ MY_Main .PHP

class MY_Main extends CI_Controller { 

function __construct() 
{ 
    parent::__construct(); 
} 
} 

在我的控制我的welcome.php

所以,如果我把登錄查一下我的,主要應該找份工作,但我不能得到它的工作的人???

+0

您應該使用CodeIgniter的會話來存儲用戶數據,並檢查會議每次用戶是否登錄。 – 2012-02-19 10:56:22

+0

這應該工作,我在我的ADMIN_Conroller中完全一樣。 – Jens 2012-02-19 11:01:00

+0

嗯你可以給你的例子代碼...就像上面張貼...和你有相同版本的CI – Dakadaka 2012-02-19 11:02:32

回答

2

你的邏輯是正確的,應該有效。這正是我在我的所有codeigniter網站上所做的。我的代碼有點複雜,因爲我的登錄檢查是從庫中調用的(所以我必須調用$CI =& get_instance();,然後$CI代替$this),但下面的內容應該適合您。 logged_in只是當。

class MY_Main extends CI_Controller { 

    function __construct() 
    { 
     parent::__construct(); 

     $session_data = $this->session->all_userdata(); 

     if(!isset($session_data['logged_in'])) 
      redirect('/login'); 
    } 
} 

用戶登錄在問候您的評論以上(HTTP 500),真的不知道發生了什麼事情在那裏給會話數據集項目的名稱。你粘貼的代碼不應該像這樣拋出錯誤,所以其他事情可能正在發生。嘗試打開內置日誌記錄功能的代碼工具。

http://codeigniter.com/user_guide/general/errors.html

0

這一段時間是因爲數據庫連接的拍攝

代碼。

如果你的數據庫,請檢查:

  1. 已經被接通的錯誤從您的cPanel的錯誤日誌報告選擇。
  2. 用戶已被添加到您的數據庫。
1

您應該創建一個庫類,並將其放入庫文件夾中,並將其作爲auto_load或在控制器中加載。 創建庫內功能,例如:

/** 
    * 
    * @return boolean check if a user is logged in or not 
    */ 
    function notLogin() 
    { 
     if (!$this->is_logged_in()){ 
      //echo "pelase <a href='login'><b>login</b></a> to continue "; 
      redirect('home/login','refresh'); exit; 
     } 
     return true; 
    } 

,並稱之爲你的控制器構造或內部的任何功能,你想是這樣的:

class Main extends CI_Controller 
{ 
    private $POST = array(); 
    private $ci_form; 

    function __construct() 
    { 
     parent::__construct(); 
     //check if user is logged in or not 
     $this->m_auth->notLogin(); 
     $this->load->library('form_validation'); 
     $this->load->library('ajax_pagination'); 
    } 
}