0

コンストラクト関数でリダイレクトせずに、すべてのページ(登録、ログイン、リマインダー)でログインチェックを使用したい。

しかし、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() {
    ...
}
4

2 に答える 2

2

コンストラクターとしてすべてのページで実行されます。むしろ、ユーザーがログインしていない場合の対処方法を確認できます。

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

ユーザーがログインしている場合は、何もする必要はありません。ユーザーがログインしていると想定して、ページを実装してください。これは正常に機能します。

他のコントローラーでも同じことをしたい場合は、ベースコントローラー(「MY_Controller」など)を使用してこのログインチェックを行います。そして、このベースコントローラーをすべての子コントローラーに拡張します。正常に動作します。

于 2013-02-01T11:53:10.483 に答える
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();
    }
}
于 2013-02-01T15:03:12.797 に答える