0

我要解决的主要问题是当有人想要访问管理面板时检查用户会话。我创建了 MY_Controller 类并将其放在库中。

class MY_Controller extends CI_Session {

public $logged_in = FALSE;

public function  __construct() {
    parent::__construct();
    $this->is_logged_in();
}

public function is_logged_in()
{
    $logged = $this->userdata('user_id');
    $this->logged_in = ($logged) ? TRUE : FALSE;
}

function sessdestroy() {

    $this->session->sess_destroy();

}

}

这是我的登录页面。我创建了一个重定向到管理面板(仪表板)的按钮,只是为了测试会话检查是否有效。

class Login extends CI_Controller {

function __construct() {

    parent::__construct();

}

public function index() {

    $this->load->view('view_login');

    if(isset($_POST['redirect'])) {

    redirect('admin');

    }
}


}

这是我检查用户会话是否存在的管理控制器。

class Admin extends MY_Controller {

function construct() {

    parent::__construct();

}


function index() {

    if($this->is_logged_in()) {

    $this->dodadi_destinacija();

    }

    else redirect('login');

}

}

但我得到了这个错误。

Fatal error: Class 'MY_Controller' not found in C:\wamp\www\UserPanel\application\controllers\admin.php on line 3

你能告诉我你对给定问题的编码解决方案的想法吗:)

4

3 回答 3

7
  1. 您需要扩展CI_Controller类而不是CI_Session
  2. 您应该放在文件夹MY_Controller下而不是application/core/application/library
于 2012-10-21T18:07:38.767 回答
1

Codeigniter 引入了一个名为core不需要加载的库的新文件夹。原始的 CI_Controller 类就是其中之一,所以如果你想让 automagick 拾取你的MY_Controller.php文件,你也应该把它放在下面application/core

如有疑问,请检查目录下扩展类的原始版本system并将其镜像到application.

CI_Controller(同样在您的第一个代码示例中,我认为您的意思是不扩展CI_Session

于 2012-10-21T18:07:32.380 回答
1

我在学习 CodeIgniter 时在一个项目中遇到了这个错误。我的解决方案是以您的项目为例,require_once('MY_Controller');在我的新控制器顶部。

这样我就不必将我的文件移动到核心,我可以将它保存在我的控制器目录中。

于 2013-11-07T04:17:36.880 回答