Поговорим немного об авторизации в Codeigniter. Я нашел пока 2 пути реализации, возможно, их больше. Первый вариант этот использование стороннего класса Ion Auth, и использование штатных средств, класса сессии.

Мы с Вами рассмотри штатный вариант, с использование сессий для авторизации на сайте. Данные сессии будем храниться в базе данных.

Первым делом нам необходимо включить в нашем контролере поддержку класса сессий и базы данных если она у Вас еще не включена.

$this->load->library('session');$this->load->library('database');

Теперь предположим, что страница с формой авторизации у Вас уже есть, и нам необходимо передать данные из формы в контролер. Поле логина у нас будет называться username а поле с паролем password. В контролере это будет выглядеть вот так.

$login = $this->input->post('username', true);$password = $this->input->post('password');

Для хранения сессии в базе данных нам необходимо создать таблицу, пусть это будет стандартная таблица которую нам предлагают в документации к фреймворку.

CREATE TABLE IF NOT EXISTS `ci_sessions` (session_id varchar(40) DEFAULT '0' NOT NULL,ip_address varchar(16) DEFAULT '0' NOT NULL,user_agent varchar(120) NOT NULL,last_activity int(10) unsigned DEFAULT 0 NOT NULL,user_data text NOT NULL,PRIMARY KEY (session_id),KEY `last_activity_idx` (`last_activity`));

После создания таблицы необходимо подправить файл конфигурации application/config/config.php. Найдите там строки $config[‘sess_use_database’] и $config[‘sess_table_name’] и приведите к виду который описан ниже.

$config['sess_use_database'] = TRUE;$config['sess_table_name'] = 'ci_sessions';

Теперь нам необходимо сделать запрос к базе данных, предполагаю, что она у вас уже есть, и запрос вы сами поставите в написанный ниже код. Пароль в базе рекомендую хранить в хешированном виде, например MD5.

$query_check_user = $this->db->query("SELECT * FROM users WHERE username = ".$this->db->escape($login)." and password = ".$this->db->escape($password)."");$userdata = $query_check_user->row_array(); // Если пользователь найденif (@$userdata['username'] == $login and @$userdata['password'] == $password) { // Создаем массим с данными сессии$authdata = array('username' => $login,'logged_in' => true); // Добавляем данные в сессию$this->session->set_userdata($authdata); // Редиректим на нужную нам страницуheader('Location: /office/');} // Если нет то выводим форму авторизацииelse {$this->load->view('start');}

Теперь нам остается проверить авторизован ли пользователь на странице, делается это достаточно просто.

$check_auth = $this->session->userdata('logged_in');if ($check_auth == true) {// Если авторизован}else {// Если нет}

Если Вы знаете еще варианты авторизации, то милости просим, поделитесь. Для проверки данных из формы можно использовать класс Form Validation.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь