页面未正确重定向

时间:2016-09-01 03:18:51

标签: php codeigniter

当我创建重定向库时,我发现了这种错误我将其命名为 redirector.php 我也已在 autoload.php

这是我的 redirector.php

class Redirector{
    protected $CI;

    public function __construct(){
        //needed for every libraries
        $this->CI =& get_instance();

        $userid = $this->CI->session->userdata('userid');

        if(isset($userid)){
            redirect('/rey');
        }else{
            redirect('/log_in');
        }
    }
}

这是我的 log_in控制器

if($check){
    $arr = array(
        'userid' => $check->id,
        'username' => $username,
        'password' => $password
    );

    $this->session->set_userdata($arr);
    //redirect('/rey','refresh');
}else{
    echo "<p>User does not exist</p>";
}

P.S我在库中制作时遇到这种错误但是如果我把这段代码放在每个构造函数中除了 log_in.php 之外的每个文件我没有收到错误

$userid = $this->session->userdata('username');
        if(empty($userid)){
            redirect('/log_in','refresh');
        }

编辑

我的索引中的重定向没有错误 log_in 但是如果我设置会话它没有重定向到rey.php这就是我所做的。

if(empty($userid) && $this->CI->uri->segment(1) != 'log_in'){
            redirect('/log_in');
        }else{
            if(isset($userid) && $this->CI->uri->segment(1) === 'log_in'){
                redirect('/rey');
            }
        }

1 个答案:

答案 0 :(得分:3)

您的redirector.php将在所有控制器之前运行..因此代码重定向将在您的登录控制器之前运行..因此它将重定向太多次。检查每个控制器上的登录更好。

如果您仍想使用此库,请将代码更改为此..

class Redirector{
    protected $CI;

    public function __construct(){
        //needed for every libraries
        $this->CI =& get_instance();

        $userid = $this->CI->session->userdata('userid');

        if(empty($userid) && $this->CI->uri->segment(1) != 'log_in'){
            redirect('/log_in');
        }

        if(!empty($userid) && $this->CI->uri->segment(1) == 'log_in'){
            redirect('/rey');
        }
    }
}