Подтвердить что ты не робот

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

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

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

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

Спасибо,
Мала

4b9b3361

Ответ 1

В моем опыте с 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)
);

Ответ 2

В руководстве указано больше гибкости, а не лучше; -)

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

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

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

Ответ 3

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

Прочтите здесь wyh. http://codeigniter.com/forums/viewthread/130577/

Ответ 4

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

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

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

В соответствии с руководством CI

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

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

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

Ответ 5

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

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

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

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

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

Приветствия..!!