當用戶嘗試通過鏈接訪問我們的網站(例如訪問www.website.com/privatepage)時,他們被重定向到登錄頁面。一旦他們登錄,我們希望將他們重定向到該目標網址 - 您如何做到這一點?登錄後預期的URL重定向+默認重定向?
此外,我們有其中一個用戶從網頁登錄,或直接到沒有預期的網址登錄頁面的使用情況 - 在這種情況下,我們希望他們重定向到一個默認的頁面。
誰能幫我想出解決辦法?
當用戶嘗試通過鏈接訪問我們的網站(例如訪問www.website.com/privatepage)時,他們被重定向到登錄頁面。一旦他們登錄,我們希望將他們重定向到該目標網址 - 您如何做到這一點?登錄後預期的URL重定向+默認重定向?
此外,我們有其中一個用戶從網頁登錄,或直接到沒有預期的網址登錄頁面的使用情況 - 在這種情況下,我們希望他們重定向到一個默認的頁面。
誰能幫我想出解決辦法?
他們如何重定向到登錄頁面?無論您使用哪種方法,都可以在登錄頁面URL的末尾附加GET變量,然後在登錄頁面上引用該變量。
所以,用戶要訪問www.example.com/privatepage
,但你需要他們在www.example.com/login
先登錄。將它們重定向到www.example.com/login?targetpage=/privatepage
,然後在您的登錄頁面的代碼中,您可以訪問targetpage
變量。
我通常只在頁面存儲在PHP會話之前我重定向到登錄頁面。登錄後,查看是否設置了會話值,如果該值已重定向回該頁面。
以這種方式進行重定向時,有一個接受網址的白名單可能是一個好主意 - 否則,攻擊者可能會向某人發送像example.com/login?attacker.com/fake_examplecom這樣的鏈接,用戶將被重定向到攻擊者的網站,同時認爲他們剛剛登錄到您的網站。原始網址指向您的網站,因此它看起來值得信賴。正如你所能想象的那樣,可以用這個做很多令人討厭的事情。
:
如果你去www.example.com/private_page
使用笨(私人頁)
// if user is not logged in...
$_SESSION['redirect'] = $this->uri->segment(1);
redirect('login');
登錄頁面
上// successfully logged in..
if (isset($_SESSION['redirect'])) {
redirect($_SESSION['redirect']);
} else {
// redirect to default page
}
你可以更具體地說哪個te你正在使用的語言學。但最重要的是當你重定向用戶登錄時,發送該頁面的URL。這樣你可以擁有最後一個URL,並在成功登錄後重定向到它。閱讀關於request.referer的更多細節。 – AMIT 2010-08-25 18:48:33
是的,就像阿米特說的,如果不知道你正在使用的方法,我們不能太多幫助。我的回答只是一般性幫助。 – palswim 2010-08-25 18:55:38