重定向在Firefox没有
问题描述:
到目前为止,我已经通过编码我的网站上显示的登录页面(使用GET数据): 网站Q =占& REQ =登录重定向在Firefox没有
如果它们已通过认证,它重定向使用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;
而下面是我的User类的一个片段:
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']);
}
}
}
的成功验证用户身份(如果我回到主页,它显示了他们登录),我做了什么错?
答
我认为过度使用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;
感谢您的帮助!
也许有些东西是在标题设置之前打印的。或..你有没有设置ob_start()? – 2012-03-10 02:17:04
您遇到的错误类型会提示重定向“循环”,其中此页面将重定向到最终重定向回此页面的页面,等等。 – 2012-03-10 02:22:32
在header(“Location(位置)”后面显式调用'exit()'。 。“);'防止脚本进一步执行。 – 2012-03-10 02:24:50