clichen 发表于 2012-2-7 15:17:56

redirect无限循环

在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) ) -->> 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');

Hex 发表于 2012-2-7 15:35:04

很简单,跳转到 public/login 的时候不做验证。
hook 里可以判断当前的URL。

clichen 发表于 2012-2-7 16:02:05

Hex 发表于 2012-2-7 15:35 static/image/common/back.gif
很简单,跳转到 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) ) 不可以吗?

clichen 发表于 2012-2-7 16:14:17

clichen 发表于 2012-2-7 16:02 static/image/common/back.gif
谢谢Hex
在public/login里我没有做验证,如下:
if ($this->input->post())


不好意思搞错了,刚学CI请见谅,获取当前URL 是current_url()

星点★余晖♂ 发表于 2012-5-7 10:45:32

我也是刚会用钩子函数,我还是不明白,
redirect('publics/login/'); ----->> 此处无限跳转

这个问题如何解决的,楼主有关键代码吗?
页: [1]
查看完整版本: redirect无限循环