Codeigniter扩展了核心类

时间:2012-02-19 10:52:12

标签: php codeigniter

我希望有一个类来检查我指定的所有控制器上的登录。 Codeigniter版本是2.1.0,我有php 5.3.10

Hier是我如何设置的: 我看https://www.codeigniter.com/user_guide/general/core_classes.html 我把它设置成这样: 在/application/core/MY_Main.php

class MY_Main extends CI_Controller {

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

在我的控制器中,我有welcome.php

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

class Welcome extends MY_Main {

    function __construct()
    {
            parent::__construct();
    }
    public function index()
    {
            $this->load->view('welcome_message');
    }
}

因此,如果我在MY-Main中进行登录检查,它应该可以正常工作,但我不能让任何人工作吗???

4 个答案:

答案 0 :(得分:6)

在我按照CI手册中的描述获得核心类的扩展之前,我需要将以下代码添加到/application/config/config.php。

从此处获取的代码http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

function __autoload($class)
{
    if(strpos($class, 'CI_') !== 0)
    {
        @include_once( APPPATH . 'core/'. $class . EXT );
    }
}

答案 1 :(得分:2)

你的逻辑是正确的,这应该有效。这正是我在所有codeigniter网站上所做的事情。我的代码有点复杂,因为我正在从库中调用我的登录检查(因此我必须调用$CI =& get_instance();然后$CI代替$this),但下面的内容应该有效为了你。 logged_in只是用户登录时为会话数据集项指定的名称。

class MY_Main extends CI_Controller {

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

        $session_data = $this->session->all_userdata();

        if(!isset($session_data['logged_in']))
            redirect('/login');
    }
}

关于你上面的评论(http 500),不确定那里发生了什么。你粘贴的代码不应该像这样抛出错误,所以其他东西可能正在发生。尝试启用内置日志记录功能的codeigniters。

http://codeigniter.com/user_guide/general/errors.html

答案 2 :(得分:1)

您应该创建一个库类并将其放在库文件夹中,并将其作为auto_load或控制器内部加载。 在库中创建函数,例如:

  /**
  * 
  * @return boolean check if a user is logged in or not
  */
  function notLogin()
  {
       if (!$this->is_logged_in()){
           //echo "pelase <a href='login'><b>login</b></a> to continue ";
           redirect('home/login','refresh'); exit;
       }
       return true;
  }

并在你的控制器构造函数或你想要的任何函数中调用它:

 class Main extends CI_Controller
 {
     private $POST = array();
     private $ci_form;

     function __construct()
     {
         parent::__construct();
         //check if user is logged in or not
         $this->m_auth->notLogin();
         $this->load->library('form_validation');
         $this->load->library('ajax_pagination');
     }
}

答案 3 :(得分:0)

由于数据库连接,有一段时间了。

请检查您的数据库是否:

    已通过从Cpanel错误日志中打开错误报告来选择
  1. 用户已添加到您的数据库中。