Собственные значения PHP-сессии теряются в Codeigniter - PullRequest
0 голосов
/ 05 сентября 2018

Я работаю над проектом, который использует собственный PHP sessions. Я перенаправляю пользователя на страницу Codeigniter , и все значения сеанса теряются. Я попытался использовать библиотеку Nativesession, она помогает мне сохранить все нативные данные php сессии и то же самое верно, если я использую session_start() в index.php Codeigniter, но я получаю уведомления с надписью " Сессия в данный момент вы не можете изменить настройки ini модуля сеанса"и" Сеанс уже запущен - игнорирование session_start() "

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Прочитав о том, как библиотека сеансов работает в codeigniter, выяснили причину проблемы.

Согласно документации,

" Когда страница загружена, класс сеанса проверит, отправляет ли браузер пользователя действительный файл cookie сеанса. Если файл cookie сеанса не существует (или он не совпадает с файлом, сохраненным в сервер или срок его действия истек) будет создан и сохранен новый сеанс."

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

Есть два способа обойти это

  1. подавить предупреждения и уведомления, генерируемые библиотекой сеансов CI с помощью @$this->load->library('session')
  2. Не загружайте библиотеку сеансов CI и продолжайте использовать собственные сеансы PHP.

Надеюсь, это поможет, если кто-то столкнется с той же проблемой.

0 голосов
/ 05 сентября 2018

вы должны начать сессию вот так

добавьте это в ваш конструктор контроллера

$this->load->library('session')

вы можете использовать сессию, как это

$this->session

добавить данные

$this->session->set_userdata('some_key', 'some_value');

получить данные

$some_value = $this->session->userdata('some_key');

Прочитать документы

Управление сессией Codeigniter

...