如果页面尝试通过URL访问页面,页面如何将用户重定向回上一页?

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输入进入登录页面,我想要的是如果他们这样做,他们将被重定向回他们来自的页面.

wes*_*ast 8

在您要返回的页面中,您可以执行以下操作:

$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)


Sas*_*saT 0

我不知道是否有更好的方法,但我总是这样做:

当用户位于“关于”页面并单击“登录”时,获取“关于”页面的 url 地址,对其进行 base64_encode,然后通过 GET 将其作为参数发送到登录页面。在登录页面上,如果凭据有效,您可以从 GET、base64_decode 获取该参数并重定向到那里。

如果您仅对主页执行此操作,则只能从 url 获取控制器,但如果您想将其应用到每个页面 ( /controller/method/var1/var2),则采用整个 URL 或整个 url 减去基本 url。

让我知道这个技巧是否有帮助。