CodeIgniter:动态登录后重定向?

时间:2010-01-25 05:24:15

标签: php codeigniter redirect login

我正在建立一个基本的CodeIgniter网站,需要登录才能访问任何网站。

如果用户访问某个网站网址,请执行以下操作:

http://www.mysite.com/project/detail/2049

他们当前已退出,我已将其设置为自动将其重新登录到登录页面。

我的问题是,在他们登录后,将他们重定向到他们输入的原始网址的最佳方式是什么,而不是说,将其重定向到网站主页?

我想也许,在登录表单中动态创建URL作为隐藏的表单元素,并在成功登录时重定向...你们怎么想?这种类型的动态登录后重定向是否有更好的/最佳实践?

4 个答案:

答案 0 :(得分:16)

当他们点击受限制的页面时,记录uri并将其设置为

的会话数据

this->session->set_userdata('redirect', 'page/uri/here');

然后将它们重定向到登录/注册

在他们登录后检查“一起出现

if($this->session->userdata('redirect'))
{
    redirect($this->session->userdata('redirect'));
}

如果没有,那么在登录后通常带它们的地方带上它们

答案 1 :(得分:0)

拦截尝试访问时:

redirect('/public/login/r'.$this->uri->uri_string());

所以在你的情况下,重定向后,url可能如下所示:

http://www.example.com/public/login/r/project/detail/2049

如果登录成功

$uri = $this->uri->uri_string();
$redirect = substr($uri, strpos($uri, '/r/')+2);
redirect($redirect);

将重定向到原始资源。

(不,+ 2不应该是+3)

答案 2 :(得分:0)

为什么不在登录时创建会话值,然后在确保安全所需的每个页面上验证它?

将其构建到库中,以便您可以调用以下内容:

$this->mylibrary->login($user);

$this->mylibrary->is_logged_in($user);位于每个页面的顶部,并自动将访问者重定向到您的主网站。

答案 3 :(得分:0)

我正在使用flashdata重定向。

this->session->set_flashdata('redirect_url', 'page/uri/here');

登录后检查是否' redirect_url'

if($this->session->flashdata('redirect_url'))
{
    redirect(base_url().$this->session->flashdata('redirect_url')));
}

希望这个帮助