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

时间:2014-10-02 19:10:33

标签: codeigniter redirect http-referer ion-auth

我有一个登录页面,如果用户已经登录,则无法访问。因此,登录页面会尝试将登录用户重定向回他们来自的页面。

如果用户单击链接转到页面,则重定向有效。问题是,如果用户在About页面尝试通过网址访问登录页面,则referrer agent将无法设置,因此登录页面不会将用户重定向回About页面,而是它重定向回base url(我使用codeigniter和ion auth库)。 登录页面的重定向代码如下:

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

是否可以正确运行此代码并重定向,而不是始终重定向到基本网址? 当用户登录时,我没有显示登录页面的链接。所以登录的用户只能使用url输入进入登录页面,我想要的是如果他们这样做,他们将被重定向回他们来自的页面。

4 个答案:

答案 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),请将整个网址或整个网址减去基数网址。

如果这个提示有帮助,请告诉我。