簡體   English   中英

在CodeIgniter中,如何在重定向頁面后清除“表單數據”

[英]In CodeIgniter, how to clear “form data” after redirecting page

我不確定我在問題標題中是否正確解釋了它,所以這里是詳細信息:

Login控制器:

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

Lobby控制器:

function index() {
    //load lobby view
}

發生的是,在登錄頁面中,我輸入用戶/密碼,單擊登錄,然后調用authenticate() ,並將我重定向到Lobby

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

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

您有兩種選擇可以解決或避免這種情況。 首先想到的是在authenticate方法中進行檢查,以查看用戶是否已經登錄。如果已經登錄,則繼續並重定向到大廳。 否則,請照常檢查用戶的登錄信息。

您也可以僅更改登錄表單的操作以直接進入大廳並使用大廳的index方法進行身份驗證。 如果用戶未登錄,則將其從那里重定向回登錄表單。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM