2011-08-19 58 views
1

我有一個php應用程序,如果會話超時,它會重定向到登錄頁面。 我想登錄頁面將用戶重新定向到他以前的位置。 理想情況下,用戶甚至可以恢復他的完整請求。 我想登錄表單內編碼整個請求一樣的:php - 登錄後的前一頁重定向(安全)

<input name="previous_request" 
    value="<?php base64_encode(gzcompress(serialize($_REQUEST))) ?>" /> 

但不知道它是非常安全的,或者建議吧。 我想知道什麼是最佳做法。 串行化「relogging」的整個請求是一種常見做法嗎?

回答

1

我會這樣做 當用戶被重定向到reloging時,正如你所說的,serialize $ _REQUEST會將它寫入數據庫,頁面將發送它的md5。所以我認爲它會更安全

+0

謝謝,這似乎是一個很好的解決方案。但最後我只保留以前的網址。這個問題更多的是關於你的方法的實用性「實踐」 –

+0

@pierreDeLEspinay,我真的沒有看到保存整個請求的問題。畢竟,您希望儘可能爲用戶創建無縫記錄。除非你有如此嚴重的安全問題(如網上銀行),根本不應該保存任何州。 –

0

就我個人而言,我不會使用$ _REQUEST,詳見here

取而代之,只需啓動session,當用戶超時並重新登錄時,請將其發送回存儲在session中的頁面。

您可以將該存儲到會話:

"http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

或者,如果使用的是https,你可以檢查$_SERVER['PORT']是443,並應用到你的代碼。

+0

你的意思是將前一個url存儲在會話變量中? –

+0

@好吧,是的,當用戶導航到另一個網頁時,會話將被更新。當超時發生時,會話將不會被明顯更新,並且在成功登錄後,您將通過讀取會話信息將他重定向到頁面。 – Devator