2013-10-15 24 views
-6

我一直在尋找是否最好將用戶登錄重定向到客戶端或服務器端的網站。從我的研究中,我發現最好依靠服務器端。如何使用PHP而不是JS重定向用戶使用PHP

我有一個JS腳本,將使用JQuery將數據發佈到php腳本來檢查用戶登錄詳細信息,如果他們發現它告訴JS重定向。這工作正常,但現在我想重定向使用PHP腳本,但腳本不會重定向,當我美元.post()方法。

所以問題是,我該如何重定向使用這種方式?我試圖建立這個系統,所以它獨立於用戶在瀏覽器中打開JS,所以任何幫助和提示都會非常受歡迎。

謝謝。

+0

$。員額使得在後臺的請求,所以答案到達「在」腳本 - 所以你不能這樣做顯示的頁面的服務器端重定向在瀏覽器中這樣。無論如何,如果解決方案X比Y更「優於」取決於多個因素 - 只要「讀過」了,服務器端重定向會更好,但實際上沒有任何標準來做出決定是非常荒謬的。 – CBroe

+0

重定向到你想要的地方.. 通常PHP會重定向,但是你可以在PHP登錄成功後使用和JavaScript基址重定向 – Svetoslav

回答

4

因爲您使用的是AJAX,所以只有JavaScript可以重定向瀏覽器。如果服務器嘗試這樣做,它只會重定向AJAX請求。

這就是說,你的「試圖建立這個系統,所以它是獨立的用戶有JS打開」聲明是與您使用$.post()相矛盾。

0

你可以從這裏得到的 「位置」 標頭(重定向URL):

jQuery - get AJAX response headers

success: function(res, status, xhr) { 
    alert(xhr.getResponseHeader("Location")); 
} 
+0

不,你不能。 AJAX默默地處理重定向,返回最終目的地的標題。 –

+0

你是對的,但是你可以在PHP中添加一個頭文件,並且當一個標誌(例如ajax = 1)在這裏時不重定向。 –

0

使用標準的形式發佈憑據身份驗證方法。使用JavaScript作爲身份驗證的主要方法就像完全沒有身份驗證一樣。

如果您已經解決了這個問題並且只是尋找非js後備,請將它全部歸爲非js。 PHP的重定向非常簡單,但是你必須輸出一個頭,這是不能異步完成的,所以你將不得不發佈數據。

例PHP重定向

header ('HTTP/1.1 301 Moved Permanently'); 
header ('Location: '.$location);