use*_*399 6 http-referer redirect codeigniter ion-auth
我有一个登录页面,如果用户已经登录则无法访问.因此登录页面会尝试将登录用户重定向回他们来自的页面.
如果用户单击链接转到页面,则重定向有效.问题是如果用户在About页面中尝试通过url访问登录页面然后referrer agent将不会设置,因此登录页面不会将用户重定向回About页面,而是重定向回base url(我使用codeigniter和ion auth库) .登录页面的重定向代码如下:
if($this->ion_auth->logged_in())
{
redirect($this->agent->referrer(), 'refresh');
}
Run Code Online (Sandbox Code Playgroud)
是否可以正确运行此代码并重定向,而不是始终重定向到基本URL?当用户登录时,我没有显示登录页面的链接.所以登录的用户只能使用url输入进入登录页面,我想要的是如果他们这样做,他们将被重定向回他们来自的页面.
在您要返回的页面中,您可以执行以下操作:
$this->session->set_userdata('referred_from', current_url());
Run Code Online (Sandbox Code Playgroud)
然后重定向回该页面
$referred_from = $this->session->userdata('referred_from');
redirect($referred_from, 'refresh');
Run Code Online (Sandbox Code Playgroud)
我不知道是否有更好的方法,但我总是这样做:
当用户位于“关于”页面并单击“登录”时,获取“关于”页面的 url 地址,对其进行 base64_encode,然后通过 GET 将其作为参数发送到登录页面。在登录页面上,如果凭据有效,您可以从 GET、base64_decode 获取该参数并重定向到那里。
如果您仅对主页执行此操作,则只能从 url 获取控制器,但如果您想将其应用到每个页面 ( /controller/method/var1/var2),则采用整个 URL 或整个 url 减去基本 url。
让我知道这个技巧是否有帮助。
| 归档时间: |
|
| 查看次数: |
20035 次 |
| 最近记录: |