CodeIgniter всегда запускает этот код - PullRequest
3 голосов
/ 03 ноября 2011

Мне нужно запускать несколько кодов для каждого запроса, всегда в зависимости от того, вошел ли пользователь в систему или нет.

Где я могу разместить этот код?

Есть ли возможностьможет передавать данные, этот код:

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

        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
        $this->load->library('security');
        $this->load->library('tank_auth');
        $this->lang->load('tank_auth');
        $this->load->model('users_model');

        if ($this->tank_auth->is_logged_in())
        {
            $data = $this->users_model->get_userinfo($this->tank_auth->get_username());

            if ($data['exp'] >= $data['max_exp']) {

                $new_data = array(
                    'exp' => $data['exp'] - $data['max_exp'],
                    'level' => $data['level'] + 1,
                );

                $this->db->where('id', $data['id']);
                $this->db->update('users', $new_data);

                echo 'Hello?';
            }
        }
    }

Это MY_Controller, в классе Core. Могу ли я передать эти данные дальше?Я полагаю, что при повторном отборе всех данных в реальном классе кажется, что они не являются секретными.

1 Ответ

6 голосов
/ 03 ноября 2011

Создайте класс в основной папке, затем заставьте все ваши контроллеры расширять этот класс.

Я сделал систему входа, очень похожую на ту, которую вы описываете.

Это класс восновная папка:

class MY_Controller extends CI_Controller{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('cart');
        $this->load->library('session');
        $this->load->library('pagination');

        $this->load->helper('form');
        $this->load->library('form_validation');
        if (!$this->session->userdata('loggedin')){
            redirect('/sessions/log_in/','refresh');
        } 
    }
}

Примечание: убедитесь, что ваш конфиг правильно настроен для префикса наследования

Тогда ваши контроллеры в папке контроллеров расширятся My_Controller

Для многоуровневоговходы в систему или более подробный пример см. мой старый вопрос:

Codeigniter: Управление правами входа в систему с наследованием

Также учебник, на котором я основывал свои вещи на:

http://davidwinter.me/articles/2009/02/21/authentication-with-codeigniter/

Ответ относительно дальнейшей передачи данных: Использовать класс сеанса?

http://codeigniter.com/user_guide/libraries/sessions.html

$this->load->library('session');
$this->session->userdata('fieldName') = 1;//*appropriateValue*;
//Call this in another class
echo $this->session->userdata('fieldName');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...