我想要解决的主要问题是在有人想要访问管理面板时检查用户会话。我创建了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
请告诉我您对给定问题的编码解决方案的想法,请:)
答案 0 :(得分:7)
CI_Controller
课程,而不是CI_Session
MY_Controller
放在application/core/
文件夹而不是application/library
答案 1 :(得分:1)
Codeigniter引入了一个名为core
的新文件夹,其中的库不需要加载。原来的CI_Controller类就是其中之一,所以如果你想让自动选取你的MY_Controller.php
文件,你应该把它放在application/core
下。
如有疑问,请检查system
目录下的扩展类的原始版本,并在application
下查看该内容。
(同样在您的第一个代码示例中,我认为您的意思是扩展CI_Controller
而不是CI_Session
)
答案 2 :(得分:1)
我在学习CodeIgniter时在项目中出现此错误。我的解决方案是,以您的项目为例,require_once('MY_Controller');
位于我的新控制器顶部。
这样我就不必将文件移动到核心,我可以将它保存在我的控制器目录中。