Авторизация пользователей в CodeIgniter

После всего проделанного, конечно же хочется продолжения и собственно сделать авторизацию и регистрацию пользователей на сайте.

Все как всегда довольно просто и понятно. Давайте рассмотрим уже готовую библиотеку авторизации пользователей Tank Auth.

Для подключения tank_auth все нужно скачать саму библиотеку, перейдя по ссылке
tank_auth
После того как вы скачаете tank_auth по ФТП загрузить все попочки, не изменяйте их пути, так как эта авторизация уже подготовлена к установке на CodeIgniter.

На сегодняшний день для развития своего бизнеса важна его правильная реклама, где именно размещать рекламу задаются вопросом многие бизнесмены, однако большинство людей владеют автомобилями, поэтому самой эффективной рекламой будет ее размещение на автобусах или других транспортных средств перевозящих людей. Вы можете заказать рекламу прямо на сайте riara.

Загрузили, обратите внимание на конфигурационный файл авторизации tank_auth.php
Настройте следующие параметры
$config['website_name'] = 'Your project';
$config['webmaster_email'] = 'webmaster@your-site.com';


Пишем название вашего сайта и вам емаил.
$config['allow_registration'] = TRUE; 
$config['captcha_registration'] = TRUE;
$config['email_activation'] = TRUE;
$config['email_activation_expire'] = 60*60*24*2;
$config['email_account_details'] = TRUE;
$config['use_username'] = TRUE;


тут думаю все понятно.
Можно ли регистрироваться, если false, то нельзя
Выводить ли капчу, если false то невыводить
Нужно ли подтверждать емаил адрес
Сколько времени дается на подтверждении, по умолчанию 2 дня.

Теперь еще немаловажная настройка, при регистрации пользователи могут внести имя либо слишком короткое, либо слишком длинно, так же и с паролем. Представьте если пользователь вводит пароль состоящий из 1 символа или цифры, нам то конечно все равно, но в итоге, если что то произойдет, пользователь будет долбить нас письмами, поэтому, существуют следующие настройки
$config['username_min_length'] = 4;
$config['username_max_length'] = 20;
$config['password_min_length'] = 4;
$config['password_max_length'] = 20;


минимальная длина логина
максимальная длина логина
минимальная длина пароля
максимальная длина пароля

Время жизни cookie, другим словом сколько времени пользователь будет авторизирован на сайте, если он не посещал его.
$config['autologin_cookie_name'] = 'autologin';
$config['autologin_cookie_life'] = 60*60*24*31*2;

По умолчанию 2 месяца, если пользователь на заходил на сайт два месяца, он автоматически выйдет с сайта.

После того как мы все настроили, открываем на файл /config/autoload.php и как уже делали подключаем библиотеку авторизации
$autoload['libraries'] = array('pagination','tank_auth');


Вот собственно и все.
Теперь на страницах сайта или же в функциях для проверки мы можем использовать следующие данные

$this->tank_auth->get_user_id() - выводит id авторизированного пользователя
$this->tank_auth->get_username() - выводит его логин
$this->tank_auth->is_logged_in() - проверяет авторизирован ли пользователь, вернет false если

2 комментария

avatar
А какая структура таблицы тут в БД должна быть?)
avatar
tank_auth вроде как сам структуру таблицы создает.
Я если честно ей только раз пользовался, потом начал использовать стандартные средства самого фреймворка дабы не захламлять код.

В config.php сделай следующее
Создай секретны ключ для сессий
Найди
$config['encryption_key']

И замени
$config['encryption_key'] = 'fdhgjufdfdrtyujbjuyffjugfujyfuj';

Или любой другой набор букв.

Затем настройки сессий измени на
$config['sess_cookie_name']        = 'session';
$config['sess_expiration']        = 2419200;
$config['sess_expire_on_close']    = FALSE;
$config['sess_encrypt_cookie']    = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']        = 'table_name';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent']    = TRUE;
$config['sess_time_to_update']    = $config['sess_expiration'];


После нужно подгрузить стандартные библиотеки по работе с сессиями и куками
autoload.php
$autoload['libraries'] = array('session');


Теперь нужно кодить, размещаешь форму авторизации на странице и создаешь обработчик формы.
Форму можешь проверять стандартным валидатором
cidocs.ru/210/libraries/form_validation.html

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


// $cell - объект данные о пользователе полученный из базы данных
$data = array(
       'id'           => $cell->id, // ID user
       'username'     => $cell->username, // Логин юзера
       'logged_in'    => true // Пользователь авторизирован
);
// Добавляем данные в сессию
$this->session->set_userdata($data);


Поле этого на страницах сайта делаем так

if( ! $this->session->userdata("logged_in")) {
    echo "Авторизируйтесь";
} else {
    echo "Привет: " . $this->session->userdata("username");
}
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.