Как я могу использовать функцию __construct в моем другом контроллере CodeIgniter - PullRequest
4 голосов
/ 13 июля 2010

У меня есть controller вызываемый член в этой функции конструкции

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

Я хочу проверить в моем другом контроллере, что пользователь вошел в систему, как я могу использовать эту функцию в моем другом контроллере под названием profile и другие

Это мой первый проект с CodeIgniter

Ответы [ 3 ]

2 голосов
/ 13 июля 2010

Ваши проверки подлинности должны быть в библиотеке:

Выдержка из базового сценария аутентификации codigniter:

class Site_sentry 
{
    function Site_sentry()
    {
        $this->obj =& get_instance();
    }

function is_logged_in()
{
    if ($this->obj->session) 
    {
        if ($this->obj->session->userdata('session_logged_in'))
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    else
    {
        return FALSE;
    }
} 

   function login_routine()
   {
     //do login here (enter into session)
   }
}

Эта библиотека хранится в application / library под именем файла в соответствии с его классом с суффиксом .php.

Затем вы можете добавить это в файл конфигурации автозагрузки application / conig / config.php :

$autoload['libraries'] = array('database', 'site_sentry', 'session');

или загрузите его вручную в каждый контроллер:

$this->load->library('Site_sentry);

Затем вы можете проверить ваш сеанс из контроллеров, например:

 class Class extends Controller{

    function Class()
    {   
       parent::Controller();
       if( $this->site_sentry->is_logged_in() == FALSE){
            redirect('managerlogin/');
        }

    }
   }

Также проверьте эту страницу документации http://codeigniter.com/user_guide/libraries/sessions.html; Особый интерес представляет сохранение сеанса в разделе базы данных.

0 голосов
/ 14 июля 2010

Пример с сессией:

class SomeClass extends Controller {

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

function is_logged_in()
{

    $is_logged_in = $this->session->userdata('is_logged_in');
    if(!isset($is_logged_in) || $is_logged_in != TRUE) 
    {
        redirect('login');
    }
}
0 голосов
/ 13 июля 2010

Я не думаю, что делать это с классом - лучшая идея.Если пользователь вошел в систему, вы должны проверить флаг (значение или что-то еще) внутри сеанса , поэтому вам не нужно работать с другим контроллером.

Преимущество будетможет быть, к сеансу можно получить более легкий доступ, и это более распространенный подход.

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