CodeIgniter - 如何在登录后将用户重定向到先前尝试的路由

时间:2018-05-26 10:25:23

标签: php codeigniter-3 referrer

使用CodeIgniter框架,我在AdminController内有一个管理页面,在其构造函数中我检查用户是否未登录,然后重定向到登录页面。

LoginController成功登录后,我希望用户重定向到上一个管理页面。

我试过不同的例子:

$this->load->library('user_agent');
$this->session->set_userdata('redirect_back', $this->agent->referrer());

$_SERVER['HTTP_REFERER']);

但两人都给我回了空字符串。

如何解决此问题。

1 个答案:

答案 0 :(得分:0)

AdminController文件中,在重定向到LoginController之前,将当前网址保存到会话变量中:

$referrer_value = current_url().($_SERVER['QUERY_STRING']!=""?"?".$_SERVER['QUERY_STRING']:"");
$this->session->set_userdata('login_referrer', $referrer_value);
// redirect to login page

LoginController中,成功登录后,检查会话'login_referrer'是否有值。如果它已经使用该值重定向。

if($this->session->userdata('login_referrer')!=""){
    $tmp_referrer = $this->session->userdata('login_referrer');
    $this->session->unset_userdata('login_referrer');
    redirect($tmp_referrer);
}

您可能需要调用以下内容来加载所需的库和帮助程序,以使上述代码成功运行。

$this->load->helper('url');
$this->load->library('session');