CodeIgniter не использует нативные сессии PHP. Он генерирует свои собственные данные сеанса. Вам нужно загрузить библиотеку 'session', вызвав $this->load->library('session');
.
Что я делаю, так это шифрую пароль при регистрации пользователя с помощью класса Encryption. Это делается путем вызова $this->load->library('encrypt');
, а затем $this->encrypt->encode("user_password")
. Вам нужно указать ключ шифрования, записав это в свой файл config.php
: $ config ['encryption_key'] = "YOUR KEY" ;.
Затем для проверки учетных данных я получаю зашифрованный пароль из БД и вызываю $this->encrypt->decode("user_password")
и проверяю, совпадает ли он с паролем, который написал пользователь.
После проверки учетных данных я сохраняю информацию, которую хочу сохранить от пользователя в сеансе CodeIgniter. Это делается путем установки массива с требуемыми параметрами и последующего вызова $this->session->set_userdata($newdata);
.
Пример (скопировано с http://codeigniter.com/user_guide/libraries/sessions.html):
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Затем, чтобы проверить, вошел ли пользователь в систему, нужно просто проверить в каждом методе, вошел ли пользователь в систему, вызвав что-то вроде этого: $this->session->userdata('logged_in');
Чтобы выйти из системы, просто уничтожьте сеанс: $this->session->sess_destroy();
.
По моему опыту, есть несколько вещей, которые фреймворк делает для вас:
- Уничтожает сеанс через определенное время бездействия.
- CodeIgniter очищает входные данные от форм. Например, если вы попытаетесь ввести "(" или "'" или любые другие символы, которые могут сломать или создать нежелательные операторы SQL, CodeIgniter ускользнет от них.
- Это качается. Это очень гибкий и полный.
- Руководство пользователя - ваш друг. В основном оно содержит все, что вам нужно знать, и дает примеры того, как это сделать.