Php 重定向到登录页面-Codeigniter

Php 重定向到登录页面-Codeigniter,php,codeigniter,Php,Codeigniter,我想查看会话;如果退出,它会转到我的网站,否则会重定向到“登录”页面;这是我的控制器: function __construct() { parent::__construct(); $this->is_logged_in(); } public function index($failed=FALSE) { $data['main_content'] = 'login_view'; $data['failed_validation'] = $failed

我想查看会话;如果退出,它会转到我的网站,否则会重定向到“登录”页面;这是我的控制器:

function __construct() {
    parent::__construct();
    $this->is_logged_in();
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function is_logged_in() {
    if ($this->session->userdata('f_name') != null) {
        return;
    } else {
        $this->index();
       //die()// This one does not help either
    }
}

public function display_site() {
    $data['main_content'] = 'site_view';
    $this->load->view('includes/template', $data);
}
function __construct() {
    parent::__construct();
    $this->load->model('user_model');
    if ($this->user_model->is_logged_in() == FALSE) {
        $this->index();
    }
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function login() {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = FALSE;
    $this->load->view('includes/template', $data);
}
class Login extends CI_Controller {

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

    public function index() {
        $this->load->view('includes/login');
    }
}
class Main extends CI_Controller {
    public function __construct() {
        parent::__construct();      
            $this->load->model('user_model');
            if (!$this->user_model->is_logged_in()) {
               redirect(base_url().'login', 'location', 301);
            }   
    }

    public function index() {
        $this->load->view('includes/main');
    }
}
这是建议后的版本(但仍然是相同的问题!):

控制器:

function __construct() {
    parent::__construct();
    $this->is_logged_in();
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function is_logged_in() {
    if ($this->session->userdata('f_name') != null) {
        return;
    } else {
        $this->index();
       //die()// This one does not help either
    }
}

public function display_site() {
    $data['main_content'] = 'site_view';
    $this->load->view('includes/template', $data);
}
function __construct() {
    parent::__construct();
    $this->load->model('user_model');
    if ($this->user_model->is_logged_in() == FALSE) {
        $this->index();
    }
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function login() {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = FALSE;
    $this->load->view('includes/template', $data);
}
class Login extends CI_Controller {

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

    public function index() {
        $this->load->view('includes/login');
    }
}
class Main extends CI_Controller {
    public function __construct() {
        parent::__construct();      
            $this->load->model('user_model');
            if (!$this->user_model->is_logged_in()) {
               redirect(base_url().'login', 'location', 301);
            }   
    }

    public function index() {
        $this->load->view('includes/main');
    }
}
型号:

  public function is_logged_in()
    {
         return ($this->session->userdata('is_logged_in') );
    }
这很好,但当用户进入登录页面时,它会同时显示登录页面和我的网站主页!在另一方面,即使我死在(见我的代码中的注释)它没有帮助,它给了我一个空白页

谢谢

您需要使用url\u帮助程序的一部分功能。一旦加载了它,您就可以简单地调用redirect(“yoururlhere.com”),因为您可能经常使用它,所以您可能希望自动加载它,而不是每次都加载lib

登录控制器:

function __construct() {
    parent::__construct();
    $this->is_logged_in();
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function is_logged_in() {
    if ($this->session->userdata('f_name') != null) {
        return;
    } else {
        $this->index();
       //die()// This one does not help either
    }
}

public function display_site() {
    $data['main_content'] = 'site_view';
    $this->load->view('includes/template', $data);
}
function __construct() {
    parent::__construct();
    $this->load->model('user_model');
    if ($this->user_model->is_logged_in() == FALSE) {
        $this->index();
    }
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function login() {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = FALSE;
    $this->load->view('includes/template', $data);
}
class Login extends CI_Controller {

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

    public function index() {
        $this->load->view('includes/login');
    }
}
class Main extends CI_Controller {
    public function __construct() {
        parent::__construct();      
            $this->load->model('user_model');
            if (!$this->user_model->is_logged_in()) {
               redirect(base_url().'login', 'location', 301);
            }   
    }

    public function index() {
        $this->load->view('includes/main');
    }
}
主控制器:

function __construct() {
    parent::__construct();
    $this->is_logged_in();
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function is_logged_in() {
    if ($this->session->userdata('f_name') != null) {
        return;
    } else {
        $this->index();
       //die()// This one does not help either
    }
}

public function display_site() {
    $data['main_content'] = 'site_view';
    $this->load->view('includes/template', $data);
}
function __construct() {
    parent::__construct();
    $this->load->model('user_model');
    if ($this->user_model->is_logged_in() == FALSE) {
        $this->index();
    }
}

public function index($failed=FALSE) {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = $failed;
    $this->load->view('includes/template', $data);
}

public function login() {
    $data['main_content'] = 'login_view';
    $data['failed_validation'] = FALSE;
    $this->load->view('includes/template', $data);
}
class Login extends CI_Controller {

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

    public function index() {
        $this->load->view('includes/login');
    }
}
class Main extends CI_Controller {
    public function __construct() {
        parent::__construct();      
            $this->load->model('user_model');
            if (!$this->user_model->is_logged_in()) {
               redirect(base_url().'login', 'location', 301);
            }   
    }

    public function index() {
        $this->load->view('includes/main');
    }
}

理想情况下,您应该只从
is\u logged\u in
返回true或false,否则没有意义,目前它没有正常化,返回的是混合的,因此您的代码是错误的,控制器中的方法应该用作路由,因此索引是您的索引,显示站点将是/显示控制器/显示站点您应该尝试将您的逻辑移动到一个模型中我应用了您的建议(您可以查看我编辑的帖子);但还是一样的问题!你看到我编辑的问题了吗;我想这正是我所做的!你能强调一下区别吗?只需要说这一个确实显示了登录页面2次;一个来自构造函数,一个来自索引;换句话说,每当我在costructor中重编时,它不会停止执行,而且因为调用了deafult的索引,所以它也调用了索引!您没有重定向到$this->login(),而是重定向到$this->index()。。在index()中,您设置了$data['main_content']='login_view',但逻辑上应该是'site_view'Ummm;现在它是有意义的;我最大的错误是我想在同一个控制器中实现登录和其他功能!我想这是不可能的,这也是有道理的!我现在就试试你的!好吧,如果您不在构造函数中检查$this->user\u model->is\u logged\u in(),而是在索引函数中检查它,然后在它为false时重定向,那么可能会有一个逻辑。但这也不是一个好办法。控制器应具有仅与该控制器相关的功能。所以最好为login和main编写单独的控制器。