用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3109|回复: 4
收起左侧

[已解决] redirect无限循环

[复制链接]
发表于 2012-2-7 15:17:56 | 显示全部楼层 |阅读模式
在hooks目录下建立勾子实现用户登录后台的权限,但如果用户还没有登录时打开页面,redirect一直是无限循环,导致网页都打不开,请问有什么方法解决吗?
以下是勾子代码:
class MangerAuth
{
    private $CI;
    public function __construct()
    {
        $this->CI = & get_instance();
        $this->CI->load->helper('url');
        $this->CI->load->library('session');
    }
    public function auth()
    {
        $Config = & load_class('Config');
        // 需要进行权限检查的URL
        if( preg_match("/v3.*/i",$Config->config[base_url]) ) -->> URL中如果都含有V3目录的话就实行判断
        {
          if( !$this->CI->session->userdata('USER_AUTH_KEY') ) --->>以用户ID判断用户是否已登录
            {
            // 用户未登陆
              redirect('publics/login/'); ----->> 此处无限跳转
            return;
          }
        }
        $admin_name = $this->CI->session->userdata('username');
        $admin_power = $this->CI->session->userdata('power');
发表于 2012-2-7 15:35:04 | 显示全部楼层
很简单,跳转到 public/login 的时候不做验证。
hook 里可以判断当前的URL。
 楼主| 发表于 2012-2-7 16:02:05 | 显示全部楼层
Hex 发表于 2012-2-7 15:35
很简单,跳转到 public/login 的时候不做验证。
hook 里可以判断当前的URL。

谢谢Hex
在public/login里我没有做验证,如下:
  if ($this->input->post())
   {
    }else
    {
        $this->smarty->display('public/login.html');
    }

只是在,hook下怎么判断当前URL? 我这里用了这个if( preg_match("/v3.*/i",$Config->config[base_url]) ) 不可以吗?
 楼主| 发表于 2012-2-7 16:14:17 | 显示全部楼层
clichen 发表于 2012-2-7 16:02
谢谢Hex
在public/login里我没有做验证,如下:
  if ($this->input->post())

不好意思搞错了,刚学CI请见谅,获取当前URL 是current_url()
发表于 2012-5-7 10:45:32 | 显示全部楼层
我也是刚会用钩子函数,我还是不明白,
  redirect('publics/login/'); ----->> 此处无限跳转

这个问题如何解决的,楼主有关键代码吗?

本版积分规则