2012-02-08 141 views
0

我的登入程序看起來像這樣:重定向不能正常工作

  • 用戶填寫的電子郵件,並通過領域
  • 阿賈克斯將這些字段reg_system.php。這裏是源代碼 文件

if (isset($_POST['formID']) && !empty($_POST['formID'])) { 
    $registration = new registration($db); 
    $forms = array('signup_form', 'signin_form', 'tcr_form'); 
    if (in_array($_POST['formID'], $forms)) { 
     $redirect = ""; 
     switch ($_POST['formID']) { 
      case 'signin_form': 
       if ($registration->signin()) 
        $redirect ='me'; 
       break; 
      case 'tcr_form': 
      case 'signup_form': 
       $registration->signup(); 
       break; 
     } 
    } 
    if (!empty($redirect)) 
     header("Location:".wsurl."?page=".$redirect); 
} 

:wsurl前聲明,並且是正確的值。

  • 如果$registration->signin()返回true,則必須重定向到 domain.com/?page=me

在調試過程中,我看到一切順利,並$註冊 - >登入()函數後處理螢火蟲之後返回true.But XHR顯示該屏幕

enter image description here

然後重定向 後

頁停留,因爲它是:同樣的登錄頁面上。腳本不重定向到任何地方..

我不知道是什麼原因,因爲整個檢查過程中調試近10倍的時間。 PHP在header()之前不輸出任何內容。

+0

爲什麼要重定向ajax請求?如果你想重定向sumbission後的用戶,你不應該使用AJAX,但一個簡單的形式來替代,或者,重定向用戶使用JavaScript,像這樣的'location.href =「...」'成功的Ajax請求後。 – 2012-02-08 00:31:51

+0

但是,當您手動輸入網址時是否會加載? – Alex 2012-02-08 00:32:26

+0

@ w0rldart啊.. – 2012-02-08 00:34:01

回答

1

嘗試使用JS爲您重定向。這可能比通過php來做更好。

<script type="text/javascript"> 
<!-- 
window.location = <?php echo wsurl."?page=".$redirect; ?>; 
//--> 
</script> 
+1

_IT的總是比通過php._做得更好'[來源請求]' – 2012-02-08 00:35:43

+0

@邁克爾,我找不到證據來支持我的理論,我想我將修改我的答案! :) – Roozbeh15 2012-02-08 00:42:16

+0

試試用javascript開啓*關閉*;) - 笑話放在一邊,我認爲AJAX成功處理程序應該處理它。 – hakre 2012-02-08 01:05:57