2014-10-02 17 views
5

我有一個登錄頁面,如果用戶已經登錄,那麼登錄頁面將不可訪問。因此登錄頁面會嘗試將登錄的用戶重定向到它們來自的頁面。如果用戶嘗試通過網址訪問該頁面,用戶如何將用戶重定向到上一頁?

如果用戶點擊鏈接轉到頁面,重定向工作。問題是如果用戶在About頁面嘗試通過URL訪問登錄頁面,則referrer agent將不會被設置,因此登錄頁面不會將用戶重定向到About頁面,而是將其重定向回base url(我使用codeigniter和離子認證庫)。如下 登錄頁面的重定向代碼:

if($this->ion_auth->logged_in()) 
{ 
    redirect($this->agent->referrer(), 'refresh'); 
} 

是否有可能運行這段代碼和重定向,而不是正常的總是重定向到基礎URL? 當用戶登錄時,我沒有顯示登錄頁面的鏈接。所以登錄的用戶只能使用url輸入進入登錄頁面,而我想要的是如果他們這樣做,他們將被重定向回他們來自的頁面。

回答

0

我不知道是否有什麼更好的辦法,但我總是這樣做:

當用戶在關於頁面,點擊登錄時,採取有關網頁的URL地址,這樣做就可以了,也許BASE64_ENCODE和然後通過GET將其作爲參數發送到登錄頁面。在登錄頁面上,如果憑據有效,則從GET,base64_decode獲取該參數並在那裏重定向。

如果你只爲主頁做這些,你只能從url獲得控制器,但如果你想在每個頁面上應用它(/controller/method/var1/var2),那麼採取整個URL或整個url減去基本url。

讓我知道這個技巧是否有幫助。

8

在要回去,你可以做的頁面:

$this->session->set_userdata('referred_from', current_url()); 

然後重定向到該頁面

$referred_from = $this->session->userdata('referred_from'); 
redirect($referred_from, 'refresh'); 
4

試試這個:

$this->load->library('user_agent'); redirect($this->agent->referrer());

其他

使用SESSION進行登錄和註銷。如果會話存在阻止登錄頁面,則允許登錄頁面使用if語句。

1

我正在這樣做。

重定向($ _ SERVER ['HTTP_REFERER']);

相關問題