在我的home
控制器中,我要检查用户是否已登录。请参阅以下代码:
<?php
class Home extends Controller {
private $db;
private $session;
public function __construct($db, $session) {
$this->db = $db;
$this->session = $session;
parent::__construct($db, $session);
}
public function index() {
$this->view('home/index', array('user' => $x ) );
}
public function login() {
if( $this->session->loggedIn == true ) {
$this->index();
exit();
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
$sessionToDb = $this->session->startSession( $_POST['user_email'], $_POST['user_password'] );
if( $sessionToDb === true ) {
$this->index();
exit();
}
else {
$data['error'] = '<p>Fout tijdens inloggen.<br />'.$x.'</p>';
}
}
$data['url'] = $_SERVER['REQUEST_URI'];
$this->view('home/login', $data);
}
public function logout() {
$this->session->endSession();
$this->login();
exit();
}
}
?>
如果用户已经登录,他应该可以看到登录屏幕,所以我添加了这段代码:
public function login() {
if( $this->session->loggedIn == true ) {
$this->index();
exit();
}
哪个有效...但是网址保持不变:admin/home/login/
,这可能令人困惑。
所以我可以重定向用户:
public function login() {
if( $this->session->loggedIn == true ) {
header('Location: /admin/home/index/';
exit();
}
同样适用于logout()
功能。
哪种方法更好?