到目前为止,我已将我的网站编码为显示登录页面(使用GET数据): ?网站Q =帐户并REQ =登录
如果他们经过身份验证,则会使用PHP标头()将其重定向到帐户页面: 网站Q =帐户
出于某种原因,我在Firefox上提出了“页面没有正确重定向”的消息,其中Internet Explorer似乎正常工作......以下是代码片段:
case 'account':
if($req=="login") {
if($user->isLoggedIn())
header("Location: /?p=account");
else {
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$form_data = array('username' => $_POST['username'], 'password' => $_POST['password']);
$user->login($form_data);
if($user->isLoggedIn()) {
header("Location: /?p=account");
}
}
$pagearr=array('css' => "login.css", 'content' => "login.php");
}
}
else {
if(!$user->isLoggedIn())
header("Location: /?p=account&req=login");
}
break;
以下是我的用户类的片段:
function User() {
session_start();
$this->user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null;
if($this->user_id) {
$database= new Database;
if($database->checkUserSession($this->user_id,session_id())) {
$this->logged_in=true;
}
else {
$this->addSessionError('global','Your login session has timed out, you may login by <a href="/syn/?p=account&req=login">clicking here</a>.');
unset($_SESSION['user_id']);
}
}
}
用户已成功通过身份验证(如果我返回主页,则显示他们已登录),我做错了什么?
答案 0 :(得分:0)
我认为过度使用header()对于这种情况不是很好的做法,所以我在同一个GET字段中创建了“account”和“login”,然后检查用户是否已登录以显示权利包括。
case 'account':
$pagearr=array('css' => "login.css", 'content' => "login.php");
if($user->isLoggedIn())
$pagearr=array('css' => "account.css", 'content' => "account.php");
else {
$pagearr=array('css' => "login.css", 'content' => "login.php");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$form_data = array('username' => $_POST['username'], 'password' => $_POST['password']);
if($user->login($form_data)) {
$pagearr=array('css' => "account.css", 'content' => "account.php");
}
}
}
break;
感谢帮助人员!