2012-03-10 99 views
0

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

的成功验证用户身份(如果我回到主页,它显示了他们登录),我做了什么错?

+0

也许有些东西是在标题设置之前打印的。或..你有没有设置ob_start()? – 2012-03-10 02:17:04

+2

您遇到的错误类型会提示重定向“循环”,其中此页面将重定向到最终重定向回此页面的页面,等等。 – 2012-03-10 02:22:32

+0

在header(“Location(位置)”后面显式调用'exit()'。 。“);'防止脚本进一步执行。 – 2012-03-10 02:24:50

回答

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; 

感谢您的帮助!