Какую библиотеку сессий мне следует использовать с CodeIgniter? - PullRequest
5 голосов
/ 08 сентября 2010

Я недавно начал использовать CI и его сеансы CI, но я заметил, что одна вещь, в частности, требует гораздо больше времени для сеансов CI, чем для базовых сеансов PHP: Массивы .

У меня есть массив данных, который сохраняется независимо от имени входа / выхода, называемый $_SESSION['stats'], затем я сохраняю данные в этом массиве в виде:

$_SESSION['stats']['last_page'] = $_SERVER['REQUEST_URI'];.

И когда пользователь выходит из системы, он сохраняет массив статистики в переменной, очищает сеанс и затем загружает его обратно в новый сеанс.

Проблема в том, что для редактирования ключа last_page вместо одной строки выше, я должен использовать этот код:

$stats = $this->CI->session->userdata('stats');
$stats['last_page'] = $_SERVER["REQUEST_URI"];
$this->CI->session->set_userdata('stats', $stats);

Это одно из многих неудобств, которые я нахожу на сеансах CI, которые заставляют меня чувствовать себя неудовлетворенным этим как моим обработчиком сеансов. Итак, мой вопрос: Какую систему сеансов я должен использовать с CodeIgniter? ... есть ли какая-то причина для использования сеансов CI? Есть ли библиотека CI, которую вы бы предложили? Почему бы просто не использовать сеансы PHP?

Спасибо

Lemiant

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

сеансы CI предлагают некоторые дополнительные функции; , такие как автоматическое восстановление идентификатора сеанса каждые заданные промежутки времени (для безопасности), отслеживание IP-адресов и флэш-данные (очищенные данные сеанса) после прочтения один раз).

Сеансовый механизм CI сохраняет все данные в куки. Собственный механизм сессии PHP хранится на стороне сервера. У каждого есть свои преимущества / недостатки. Файлы cookie могут содержать только 4 КБ данных, поэтому, если вы храните большие объемы данных в собственных сеансах PHP, может быть лучше.

Если вы решили использовать нативные сеансы PHP, используйте: Session Hybrid (CI 1.7.2)

Session Hybrid использует собственные сеансы PHP, может хранить данные сеанса в базе данных CI по умолчанию, является заменой для класса сеанса CI и требует перезаписи только одного файла.

[* Если используется версия CI до 1.7.0, попробуйте PHPSession и Native Session ]

Примечание: если вы решите остаться с сеансами CI , для дополнительной безопасности вы можете сохранить сеансы в базе данных и зашифровать куки (см. Настройки сеанса ).

0 голосов
/ 08 сентября 2010

Похоже, вы используете метод крошки хлеба.

Это может помочь, http://codeigniter.com/forums/viewthread/137949/

И чтобы ответить на ваш другой вопрос, да, есть очень веская причина использоватьБиблиотека сеансов CodeIgniter.Я использую его, потому что мне нужно хранить данные сеанса пользователя в моей базе данных (безопаснее), а библиотека поставляется с возможностью шифрования файлов cookie, и, если включена глобальная фильтрация XSS, данные также будут очищены.

...