2010-08-25 156 views
6

當用戶嘗試通過鏈接訪問我們的網站(例如訪問www.website.com/privatepage)時,他們被重定向到登錄頁面。一旦他們登錄,我們希望將他們重定向到該目標網址 - 您如何做到這一點?登錄後預期的URL重定向+默認重定向?

此外,我們有其中一個用戶從網頁登錄,或直接到沒有預期的網址登錄頁面的使用情況 - 在這種情況下,我們希望他們重定向到一個默認的頁面。

誰能幫我想出解決辦法?

+0

你可以更具體地說哪個te你正在使用的語言學。但最重要的是當你重定向用戶登錄時,發送該頁面的URL。這樣你可以擁有最後一個URL,並在成功登錄後重定向到它。閱讀關於request.referer的更多細節。 – AMIT 2010-08-25 18:48:33

+0

是的,就像阿米特說的,如果不知道你正在使用的方法,我們不能太多幫助。我的回答只是一般性幫助。 – palswim 2010-08-25 18:55:38

回答

4

他們如何重定向到登錄頁面?無論您使用哪種方法,都可以在登錄頁面URL的末尾附加GET變量,然後在登錄頁面上引用該變量。

所以,用戶要訪問www.example.com/privatepage,但你需要他們在www.example.com/login先登錄。將它們重定向到www.example.com/login?targetpage=/privatepage,然後在您的登錄頁面的代碼中,您可以訪問targetpage變量。

3

我通常只在頁面存儲在PHP會話之前我重定向到登錄頁面。登錄後,查看是否設置了會話值,如果該值已重定向回該頁面。

5

以這種方式進行重定向時,有一個接受網址的白名單可能是一個好主意 - 否則,攻擊者可能會向某人發送像example.com/login?attacker.com/fake_examplecom這樣的鏈接,用戶將被重定向到攻擊者的網站,同時認爲他們剛剛登錄到您的網站。原始網址指向您的網站,因此它看起來值得信賴。正如你所能想象的那樣,可以用這個做很多令人討厭的事情。

6
在登錄頁面

如果你去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 
}