2012-03-10 2 views
0

До сих пор я закодированы мой сайт, чтобы отобразить страницу входа в систему (с использованием данных GET) через: сайт д = счета & REQ = ВойтиПеренаправление в Firefox неудачу

Если они проходят проверку подлинности, он перенаправляет с помощью PHP заголовок() их на страницу учетной записи: сайт? q = account

По какой-то причине я придумал сообщение «Не перенаправляет страницу правильно» в 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()? –

+2

Вид ошибки, которую вы испытываете, предлагает переадресовать «цикл», в котором эта страница перенаправляется на страницу, которая перенаправляет обратно на эту страницу и т. Д. –

+0

Вызов 'exit()' явно после заголовка («Местоположение. . ");' для предотвращения дальнейшего выполнения скрипта. –

ответ

0

Я полагал, что чрезмерное использование заголовка() не является большой практикой для этого сценария, поэтому я сделал «учетную запись» и «логин» в одном поле GET, а затем проверил, был ли пользователь зарегистрирован для отображения право включает.

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; 

Спасибо за помощь, ребята!

Смежные вопросы