CodeIgniter не использует собственные PHP-сессии. Он генерирует свои собственные данные сеанса. Вам нужно загрузить сеанс библиотеки, вызвав $this->load->library('session');
.
Что я делаю, это зашифровать пароль, когда пользователь регистрируется с использованием класса шифрования. Это делается путем вызова $this->load->library('encrypt');
, а затем $this->encrypt->encode("user_password")
. Вам нужно указать ключ шифрования, записав его в файле config.php
: $ config ['encryption_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' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Затем, чтобы проверить, если пользователь вошел в систему, вы просто должны проверить в каждый метод, если пользователь вошел в систему, вызвав что-то вроде этого: $this->session->userdata('logged_in');
Чтобы выйти из системы, просто уничтожьте сеанс: $this->session->sess_destroy();
.
В моем опыте есть несколько вещей, что структура делает для вас:
- Он уничтожает сессию после определенного времени бездействия.
- CodeIgniter очищает входные данные от форм. Например, если вы пытаетесь ввести «(» или "" или любые другие символы, которые могут сломаться или создавать нежелательные операторы SQL, CodeIgniter ускользает их от вас.
- Это качается. Это очень гибкое и полное.
- The user guide is your friend. Он содержит все, что вам нужно знать, и дает вам примеры того, как это сделать.
Я видел это и использовал его с сессиями на основе файлов cookie. Однако заставить его писать в mysql не было возможным. С учетом сказанного я решил не испортить библиотеку сеансов, и я буду вводить mysql в свою среду. Я могу сохранить все остальное на mongodb, за исключением обработки сеанса. – luckytaxi