Zend フレームワークを使用しています。簡単なログイン画面を作成しました。ユーザーがログインすると、セッションを設定し、メンバーエリアコントローラーの init 関数で、セッションをチェックしてアクセスを許可するか、ログイン画面にリダイレクトします。
ログインコントローラーを次のように設定しました。これにより、ユーザー名とパスワードがチェックされ、セッションが設定されます。
if (isset($_POST['loginSubmit']) && $form->isValid($_POST)){
$inputtedUsername = $_POST['username'];
$inputtedPassword = $_POST['password'];
if ($inputtedUsername == $username && $inputtedPassword == $password) {
$loggedIn = new Zend_Session_Namespace('loggedIn');
$loggedIn->success;
$this->_forward('index', 'home');
} else {
echo 'invalid';
}
}
ログインしているユーザーだけが見ることができるはずのホームコントローラーがあるので、 init 関数に次のように記述します。
if (isset($loggedIn->success)) {
echo 'success';
}else{
$url = $this->view->url(array(
'controller' => 'index',
'action' => 'index'));
header('Location:' . $url);
}
}
正しい資格情報を使用してログインすると、else 関数に記載されているようにログイン画面にリダイレクトされます。
私は何を間違っていますか?