CodeIgniter で「post_controller_constructor」フックをセットアップしようとしています。目的は、ユーザーがログインしていないかどうかを確認し、ログイン ページにリダイレクトすることです。
ここに私のフック構成配列があります:
$hook['post_controller_constructor'] = array(
'class' => 'Checkpoint',
'function' => 'check_status',
'filename' => 'checkpoint.php',
'filepath' => 'controllers'
);
そして、これはフックイベントのクラスです
class Checkpoint {
var $CI;
function __construct(){
$this->CI =& get_instance();
}
function check_status() {
if($this->CI->router->class == 'Login'){
return;
}
if (!isset($this->CI->session)){
$this->CI->load->library('session');
}
if(!$this->CI->session->userdata('log_status')){
//redirect(site_url('login'));
echo "not logged in";
}
else{
echo "logged in";
}
}}
ここに問題があります:
「ログイン」コントローラーからリクエストを受け取ると、check_status() 関数内の最初の if ステートメントから返されず、ビューをロードする前に「ログインしていません」と出力されます。
セッション ユーザーデータが設定されていない場合にリダイレクトしようとすると、ブラウザに「この Web ページにはリダイレクト ループがあります」というエラーが表示されます。このため、リダイレクトステートメントをコメントアウトしました
これらの問題を解決するにはどうすればよいですか?