基本控制器并将其应用于所有现有控制器

Jam*_*mes 0 codeigniter

我需要创建codeigniter基本控制器,通过mobel函数检查数据库中允许的ip地址,如果ip存在则用户应该转到主页但是如果ip地址不存在并且在codeigniter中显示404页面,我找不到核心应用文件夹中的文件夹

tpa*_*pae 6

首先,您需要扩展一个核心类,称之为MY_Controller.php

将该文件保存在:application/core/MY_Controller.php中

class MY_Controller extends CI_Controller {
    function __construct()
    {
        parent::__construct();

        $this->load->model('ip_table_model');
        $this->load->library('input');

        // assuming there's a function called "check_ip($ip_address)" in ip_table_model
        if (!$this->ip_table_model->check_ip($this->input->ip_address()) {
             redirect('error_404');
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

现在,我们假设您有一个名为ip_table_model的模型,它连接到具有IP地址列表的数据库,并且有一个名为check_ip的函数,它将验证用户是否具有访问权限.这相对简单,我不会在此展示任何示例.

redirect('error_404');页面尚不存在,您需要创建一个显示404页面的控制器.

现在,对于项目中的任何其他控制器,而不是扩展CI_Controller,使它们扩展为MY_Controller.

这是一个例子:

class Welcome extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('welcome_message');
    }
}
Run Code Online (Sandbox Code Playgroud)

说明:我们正在扩展CI_Controller以创建我们自己的核心控制器,称为MY_Controller.在内部,我们正在检查用户是否可以通过构造函数访问,该构造函数将在项目中的每个其他控制器中调用.

参考文献: