我有一个登录页面,如果用户已经登录,则无法访问。因此,登录页面会尝试将登录用户重定向回他们来自的页面。
如果用户单击链接转到页面,则重定向有效。问题是,如果用户在About
页面尝试通过网址访问登录页面,则referrer agent
将无法设置,因此登录页面不会将用户重定向回About
页面,而是它重定向回base url
(我使用codeigniter和ion auth库)。
登录页面的重定向代码如下:
if($this->ion_auth->logged_in())
{
redirect($this->agent->referrer(), 'refresh');
}
是否可以正确运行此代码并重定向,而不是始终重定向到基本网址? 当用户登录时,我没有显示登录页面的链接。所以登录的用户只能使用url输入进入登录页面,我想要的是如果他们这样做,他们将被重定向回他们来自的页面。
答案 0 :(得分:8)
在您要返回的页面中,您可以执行以下操作:
$this->session->set_userdata('referred_from', current_url());
然后重定向回该页面
$referred_from = $this->session->userdata('referred_from');
redirect($referred_from, 'refresh');
答案 1 :(得分:4)
试试这个:
$this->load->library('user_agent');
redirect($this->agent->referrer());
否则
使用SESSION
进行登录和注销。如果会话存在阻止登录页面,则使用if
语句允许登录页面。
答案 2 :(得分:1)
我这样做。
重定向($ _ SERVER [' HTTP_REFERER']);
答案 3 :(得分:0)
我不知道是否有更好的方法,但我总是这样做:
当用户在“关于”页面并单击登录时,请使用关于页面的URL地址,在其上执行base64_encode,然后通过GET将其作为参数发送到登录页面。在登录页面上,如果凭据有效,则从GET,base64_decode获取该参数并在那里重定向。
如果您只对主页进行此操作,则只能从网址获取控制器,但如果要将其应用于每个页面(/controller/method/var1/var2
),请将整个网址或整个网址减去基数网址。
如果这个提示有帮助,请告诉我。