CodeIgniter:检查用户是否登录了多个页面而没有重定向

时间:2013-02-01 11:46:54

标签: php codeigniter codeigniter-2

我希望使用登录检查所有页面(注册,登录,提醒),而不在构造函数中重定向。

但如果我使用die(),所有页面都不起作用。哪个函数可以替换die()?

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

    if($this->user->logged() == TRUE) {
        $data['message'] = 'You are already logged in';
        $this->load->view('error', $data);
        die(); // I don't want to use redirect('/error')
    }
}

public function registration() {
    ...
}

public function login() {
    ...
}

public function remind() {
    ...
}

2 个答案:

答案 0 :(得分:2)

我将在所有页面上执行它作为构造函数。相反,如果用户未登录,您可以检查该怎么做:

if($this->user->logged() == FALSE) {
       redirect("/login");
    }

如果用户已登录,则无需执行任何操作,只需假设用户已登录并实施您的页面即可。这样可以正常工作。

如果要对其他控制器执行相同操作,请使用基本控制器(如“MY_Controller”)进行此登录检查。并将此基本控制器扩展到所有子控制器。工作正常。

答案 1 :(得分:0)

我找到了解决方案!

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

    if($this->user->logged() == TRUE) {
        $data['message'] = 'You are already logged in';
        $this->load->view('error', $data);

        $this->output->_display(); // <-- use this code for enable output with die()

        die();
    }
}