2014-04-07 17 views
0

我做出了PHP腳本Ajax調用,這表明由用戶輸入的信息是否有效,他將被授權登錄。 的事情是我真的不知道有關的會話變量。該PHP腳本可以保存會話ID變量,並將其傳遞到下一個PHP頁面,其中jquery會在成功的Ajax調用時重定向到我? 或者PHP會自動使用標題位置重定向我? 我希望我明確自己。這是一個理論問題。請問PHP或jQuery的重定向我?阿賈克斯登錄

+0

你的AJAX請求將被重定向到新的位置,因爲它會跟着'302'或'301'狀態從PHP代碼的'地點:'頭。用戶不會看到這一點。 – Brad

回答

1

你會設置在會話中的用戶ID,並返回一個「成功」的狀態回到阿賈克斯。阿賈克斯成功回調會檢查返回的數據,以確定是否登錄成功,並採取相應的行動(例如,重定向到一個登錄網頁)

0

在理論上可以做到這一點無論哪種方式,但沒有看到您的實際代碼,很難給出明確的答案。

如果您使用jQuery來調用您的auth PHP腳本並在該PHP腳本中設置會話,那麼您可能會使用JS(Ajax)重定向到成功的「受保護」區域(從PHP返回會話開始的腳本)。

1

你不能在此情況下用PHP重定向,因爲標頭不以HTTP響應返回。 你可以在響應中設置一個變量,返回你的PHP進程的狀態。 像

data = array(
"connect"=>true 
); 

data = array(
"connect"=>false, 
"errors"=>"There is an error in your request" 
); 

然後在success:功能,您可以檢查變量是真還是假,如果你需要重定向。

success: function(response){ 
    if(response.connect){ 
//succeded 
}else{ 
//not succeded 
} 

希望有幫助。乾杯!

1

我從@Mijail不同意時,他說

你不能在此情況下用PHP重定向,因爲標頭不以HTTP響應返回。

使用jQuery(或純XHR),你可以驗證,如果你得到了與響應狀態(的3XX一個),然後重定向使用來自xhr對象getResponseHeader方法來獲得'location'頭看到這裏你應該重定向:

success: function(data, textStatus, xhr) { 
    if(xhr.status > 300 && xhr.status < 400) { 
     document.location.href = xhr.getResponseHeader('location') || '/'; 
    } 
} 

這是做什麼的,當你不希望複製在客戶端上的重定向規則也以正確的方式。