2012-03-10 8 views
0

に失敗これまでのところ、私は経由(GETデータを使用して)ログインページを表示するには、私のウェブサイトをコーディングされています? ウェブサイト、それらが認証されている場合、Qは= & REQ =ログインリダイレクトは

を占め、それはPHPを使用してリダイレクト ウェブサイト?q =アカウント

何らかの理由で、Internet Explorerが動作するように見えるFirefoxで「ページが正しくリダイレ​​クトされていません」というメッセージが表示されます。コードスニペット:

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()を設定しましたか? –

+2

発生しているエラーの種類によって、リダイレクト "ループ"が示唆されます。このページは、このページにリダイレクトされるページにリダイレクトされます。 –

+0

'header(" Location。 。 ");'スクリプトがさらに実行されないようにします。 –

答えて

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; 

お手数ですがありがとうございます!

関連する問題