Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在验证codeigniter中的会话变量时加载了多个视图_Php_Codeigniter_Session - Fatal编程技术网

Php 在验证codeigniter中的会话变量时加载了多个视图

Php 在验证codeigniter中的会话变量时加载了多个视图,php,codeigniter,session,Php,Codeigniter,Session,当您调用控制器时,它将始终执行您在第二段中指定的构造函数和函数,或者默认情况下,index() 在您的情况下,如果我们假设您的URL是 首先要执行的是调用$this->is_logged_in()的构造函数 如果我们假设登录失败,您可以通过以下调用加载视图:$this->load->view('admin_login') 这就是构造器 然后codeigniter调用默认函数index(),该函数还加载一个视图$this->load->view('admin\u login') 所以,这就是为什么

当您调用控制器时,它将始终执行您在第二段中指定的构造函数和函数,或者默认情况下,
index()

在您的情况下,如果我们假设您的URL是

首先要执行的是调用
$this->is_logged_in()的构造函数

如果我们假设登录失败,您可以通过以下调用加载视图:
$this->load->view('admin_login')

这就是构造器

然后codeigniter调用默认函数
index()
,该函数还加载一个视图
$this->load->view('admin\u login')

所以,这就是为什么您的视图出现两次

在我看来,解决这个问题的最简单方法是删除
index()
中的代码。您在该函数中没有执行任何特殊操作,当构造函数被执行时,视图被加载到
is\u logged\u in()

但是,我不明白为什么要在控制器中检查用户状态,以验证用户身份

不应该这样做,imho:

实际上,您可以检查用户是否未登录。相反,我必须检查用户是否已登录,然后重定向到管理区域或其他任何位置。
这样,
index()
将是显示
admin\u login
的函数,通过
is\u logged\u()的构造函数将显示另一个视图。

好的,谢谢……但刚才我发现我的会话不工作,因为当我获取用户名或登录数据时,什么都不会返回。请检查
<?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();
    }
}