2016-03-15 48 views
-1
<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Login extends CI_Controller{ 

    public function __construct() 
    { 
     parent::__construct(); 
     // Your own constructor code 

     $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){ 

      //$this->load->view('notlogin'); 
      $this->load->view('admin_login'); 
      //echo "you dont have permission to access this area"; 
     } 
    } 

    function index() 
    {  
     $this->load->view('admin_login'); 
     //die(); 
    } 

    function adminlogin() 
    { 
     $this->load->model('loginmodel'); 
     $query=$this->loginmodel->verify(); 

     if($query==true){ 

      $data=array(
       'username'=>$this->input->post('username'), 
       'is_logged_in'=>true 

       ); 
      $this->session->set_userdata($data); 
      redirect('Login/loginarea'); 
     } 
     else 
     { 
      //$this->is_logged_in(); 
      $this->index(); 
     } 
    } 

    public function loginarea() 
    { 
     $this->load->view('mainadmin'); 
    } 

    function logout() 
    { 
     $this->session->sess_destroy(); 
     $this->index(); 
    } 
} 

這裏兩個函數__constructindex加載相同的觀點兩次。我不會如何在邏輯上糾正這一點。我正在檢查is_logged_in變量是否爲true:如果爲true,則加載管理員區域或其他管理員登錄頁面。但index函數也隨之執行。多視圖正在加載驗證會話變量codeigniter

回答

0

當您調用您的控制器時,它將始終執行第二段中指定的構造函數和函數,或者默認爲index()

在你的情況,如果我們假設您的網址是http://example.com/index.php/Login

要執行的第一件事是它要求$this->is_logged_in();

構造函數如果我們假設登錄失敗,您加載與該呼叫的觀點$this->load->view('admin_login');

這就是構造函數。

然後笨調用默認功能index()同時也裝入一個視圖$this->load->view('admin_login');

所以,這就是爲什麼你的看法出現兩次。

Imo,解決這個問題的最簡單方法是去掉index()中的代碼。在該函數中您沒有做任何特殊的事情,並且在構造函數執行時,視圖在is_logged_in()中加載。

但是,我不明白爲什麼你檢查控制器中的用戶身份認證人員。

它不應該做這樣恕我直言:

其實,你檢查,如果用戶記錄。相反,我會檢查用戶記錄然後我重定向到管理區域或任何它。 這樣,index()將顯示admin_login的功能,通過is_logged_in()的構造函數顯示另一個視圖。

+0

好的,謝謝......但剛纔我發現我的會議不工作,因爲當我獲取用戶名或is_logged_in數據然後沒有返回。請檢查 –