扩展控制器Codeigniter时重定向循环

时间:2013-11-16 05:41:09

标签: codeigniter loops redirect

我在codeigniter中登录应用程序时遇到问题,问题是这样的:

我创建了MY_Controller,如下所示:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    public function __construct(){

        parent::__construct();

    }


}

然后我将它扩展到我创建的库中,这是我的“Petugas_Controller”库:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Petugas_Controller extends MY_Controller {

    public function __construct(){

        parent::__construct();
        $this->load->model('petugas_m');

    } // end contructor.


    public function check(){

        if ($this->uri->uri_string() !== 'index' && ! $this->petugas_m->is_logged_in() == TRUE){     
            redirect('admin/petugas/index');
        }
    }

}

我正在使用该库在我的“Petugas”控制器中使用,如下所示:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Petugas extends MY_Controller {

    public function __construct(){

        parent::__construct();
        $this->load->library('petugas_controller');
        $CI = &get_instance();
        $CI->check();

    }


    public function index(){

        echo "You have to login";
    }

    public function dashboard(){

        echo "Welcome to dashboard";

    }


}

在“Petugas_Controller”库中,我加载了名为“Petugas_m”的模型,这里是模型:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Petugas_m extends CI_Model {

    public function __construct(){

        parent::__construct();

    }

    public function is_logged_in(){

        return FALSE;
    }
}

这就是我正在尝试的,我的问题是我想检查用户名是否被记录,通过在“Petugas_library”中加载“Petugas_m”模型中的$ this-&gt; check(),我可以看到仪表板回显如果“Petugas_m”中的“check”方法设置为TRUE,但如果它为FALSE,它总是重定向一个循环。

我正在寻找教程但仍然有这个疯狂的问题:(, 提前感谢,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:0)

只要您的petugas_controller库位于libraries文件夹中,您就可以通过

访问check方法
$this->petugas_controller->check();

还可以尝试将支票中的if语句更改为更像

的内容
if ($this->uri->uri_string() !== 'index' &&  $this->petugas_m->is_logged_in() !== TRUE){ 

答案 1 :(得分:0)

大笑,我刚刚意识到我的错误,我刚刚尝试制作另一个控制器,它被称为登录,然后在我的“petugas_controller”库中,如果没有登录到这个“登录”控制器,我会重定向用户,它是完全工作了...... 你们这么多鼓舞我,谢谢:)。