2010-06-03 54 views
0

後,「表單數據」我不知道我的問題的標題正確地解釋它,所以這裏的細節:在笨,如何清除重定向

Login控制器:

function authenticate() { 
    if (authorized) { 
     redirect('lobby'); 
    } else { 
     redirect('login'); 
    } 
} 

Lobby控制器:

function index() { 
    //load lobby view 
} 

什麼情況是,在登錄頁面,我輸入用戶名/密碼,點擊登錄,然後authenticate()被調用,並且重定向我到Lobby

但是,當我在大廳點擊刷新時,登錄表單會再次提交,因此我再次登錄。我如何防止這種情況發生?

回答

3

你所看到的是來自瀏覽器的與CodeIgniter本身無關的行爲。 Web瀏覽器存儲登錄表單的POST數據,並在用戶點擊提交按鈕時導航到表單的操作。來自服務器的響應是重定向。因此,當用戶點擊刷新按鈕時,瀏覽器將刷新表單操作,而不是來自服務器的重定向響應。

你有幾個選項可以解決或避免這種情況。首先想到的是在驗證方法中檢查用戶是否已經登錄。如果是,請繼續並重定向到大廳。否則,請檢查用戶的登錄信息是否正常。

您也可以將登錄表單的操作直接轉到大廳,然後在大廳的索引方法中進行身份驗證。如果用戶未登錄,則將其從那裏重定向回登錄表單。

0

您應該使用控制器在構造中驗證用戶是否登錄,這樣,您可以基於會話變量重定向或不重定向。