在Firefox中重定向失败

时间:2012-03-10 02:15:24

标签: php session redirect header

到目前为止,我已将我的网站编码为显示登录页面(使用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']);
            }
        }
    }   

用户已成功通过身份验证(如果我返回主页,则显示他们已登录),我做错了什么?

1 个答案:

答案 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;

感谢帮助人员!