Сеансы CodeIgniter против сеансов PHP

Я относительно новичок в CodeIgniter и делаю свой первый проект CI, в котором есть учетные записи пользователей и т. Д. В прошлом я всегда использовал переменную $ _SESSION PHP для этой цели. Однако у CI, похоже, есть собственный механизм сеанса, который, по его утверждению, «лучше»,

Механизм сессии CI, кажется, хранит все данные в cookie? Лично мне нравится идея всех данных, хранящихся на сервере, доступ к которым осуществляется с помощью файла cookie, такого как собственный механизм сеансов PHP. Я считаю, что это глупо, что это лучше? Должен ли я просто принять механизм CI? Или я должен идти вперед и использовать собственные PHP-сессии?

Что вы, ребята, делаете?

Благодаря,
скуловая кость

По моему опыту с CI я столкнулся с некоторыми аномалиями с его сессиями, но для большинства повседневных потребностей библиотека хороша и удобна в работе. Как было отмечено, Flashdata – очень приятная функция.

Если вы решите остаться с сессиями CI, я настоятельно рекомендую хранить сеансы в базе данных и, кроме того, шифровать файлы cookie:

$config['sess_encrypt_cookie'] = TRUE; $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'sessions'; 

Структура базы данных должна быть следующей:

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

В руководстве больше гибкости , чем лучше 😉

Я предполагаю, что основным преимуществом класса Session Code Session является то, что он интегрируется с каркасом и предлагает несколько дополнительных функций, таких как отслеживание IP-адресов и то, что он вызывает flashdata (данные сеанса, которые были стерты, как только они будут прочитаны). Если вы используете фреймворк в первую очередь, это означает, что эти параметры могут быть привлекательными для вас.

Независимо от того, вы также можете сохранить данные сеанса в базе данных:

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

Храните сеанс PHP для получения важной информации и используйте сеанс CI для менее важной информации.

Читайте здесь wyh. http://codeigniter.com/forums/viewthread/130577/

Я знаю, что это более старая должность, но я считаю, что стоит поделиться тем, что я нашел.

Поскольку CI использует подход на основе файлов cookie (даже с хранилищем базы данных), это вызывает проблему для моего конкретного приложения, которое обслуживает данные для удаленных клиентов, запрашивающих данные через завиток. Суть в том, что Cookies и Cross Site Scripting, хотя и управляемы, не играют хорошо вместе.

Я решил попробовать переопределить собственный класс Session.php, предоставленный CI, с моим собственным MY_Session.php. Я был рад найти, что это было не слишком сложно, но с удивлением обнаружил, что CI восстанавливает идентификатор сеанса, хотя мой сценарий явно предоставил их.

Согласно руководству CI

Уникальный идентификатор сеанса пользователя (это статистически случайная строка с очень сильной энтропией, хешированная MD5 для переносимости и регенерированная (по умолчанию) каждые пять минут )

Хотя я, вероятно, могу найти способ переопределить это, мне интересно, не будет ли намного проще вернуться к сессиям PHP.

Просто пища для размышлений, если вы собираетесь использовать CI.

CI-сессии имеют ограничения на размер хранилища

Как вам известно, CI-сессии – это файлы cookie в основном, независимо от того, шифруете ли вы его или нет. Что касается безопасности, то у нее есть свои плюсы и минусы.

Меня беспокоило ограничение размера сессий CI, оно может содержать только данные 4 kb, поскольку в основном это cookie, в то время как Native PHP-сессия хранит только ссылочный идентификатор в cookie, и все данные сеанса хранятся в памяти сервера. Это удобно, когда у вас есть большое количество предметов, которые необходимо сохранить в сеансе.

Произнесите корзину с большим количеством предметов или плейлист с музыкальным плейлистом с более чем 50 треками … и т. Д.

Надеюсь, эта информация кому-то поможет.

Ура .. !!