2016-03-15 70 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数据然后没有返回。请检查 –