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