我正在建立一个基本的CodeIgniter网站,需要登录才能访问任何网站。
如果用户访问某个网站网址,请执行以下操作:
http://www.mysite.com/project/detail/2049
他们当前已退出,我已将其设置为自动将其重新登录到登录页面。
我的问题是,在他们登录后,将他们重定向到他们输入的原始网址的最佳方式是什么,而不是说,将其重定向到网站主页?
我想也许,在登录表单中动态创建URL作为隐藏的表单元素,并在成功登录时重定向...你们怎么想?这种类型的动态登录后重定向是否有更好的/最佳实践?
答案 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')));
}
希望这个帮助