Codeigniter расширяет базовый класс - PullRequest
5 голосов
/ 19 февраля 2012

Я хочу иметь класс, который проверяет вход в систему на всех указанных мной контроллерах.Codeigniter версии 2.1.0, и у меня php 5.3.10

Вот как я бы это настроил: я смотрю на 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 ]

6 голосов
/ 21 сентября 2012

Мне нужно было добавить следующий код в /application/config/config.php, прежде чем я получил расширение базовых классов, работающее, как описано в руководстве по CI.

Код взят здесь 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 );
    }
}
2 голосов
/ 21 февраля 2012

Вы логика верна, это должно работать.Это именно то, что я делаю на всех своих сайтах 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), не совсем уверен, что там происходит.Код, который вы вставили, не должен выдавать подобные ошибки, так что, вероятно, происходит что-то еще.Попробуйте включить встроенные функции регистрации кода.

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

1 голос
/ 22 августа 2013

Вы должны создать класс библиотеки и поместить его в папку библиотеки и загрузить как 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;
  }

и вызовите ее внутри конструктора контроллера или любых функций, которые вы хотите, например:

0 голосов
/ 17 октября 2012

Это иногда происходит из-за соединения с базой данных.

Проверьте, выбрана ли ваша база данных:

  1. , включив отчеты об ошибках из журнала ошибок Cpanel.
  2. пользователь был добавлен в вашу базу данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...