Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Сбрасываеться сессия при выходе из браузера


Recommended Posts

Приветствую, подскажите пожалуйста, я авторизуюсь в личный кабинет как пользователь, затем закрываю браузер, захожу опять на сайт и авторизации нет - слетела. По идее сессия же не связана с браузером, почему ее может сбрасывать при выходе с браузера? gc_maxlifetime установлено 86400

Змінено користувачем AndreLisif
Надіслати
Поділитися на інших сайтах


07.05.2022 в 17:36, AndreLisif сказал:

gc_maxlifetime и cookie_lifetime я выставил как 86400, но не помогло(

Только вам известно, где выставляли.

Надіслати
Поділитися на інших сайтах

07.05.2022 в 22:05, AndreLisif сказал:

В настройка php.ini

А нужно в system/library/session.php до session_start();

ini_set('session.gc_maxlifetime', 86400);

И возможно в session_set_cookie_params

 

И тут ещё что-то мутить 

setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));

 

И тут: setcookie($key, '', time() - 42000, ini_get('session.cookie_path'), ini_get('session.cookie_domain'));

  • +1 1
Надіслати
Поділитися на інших сайтах

07.05.2022 в 22:13, buslikdrev сказал:

А нужно в system/library/session.php до session_start();

ini_set('session.gc_maxlifetime', 86400);

И возможно в session_set_cookie_params

 

И тут ещё что-то мутить 

setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));

К сожалению не помогает( Что сделал:

1) Добавил в session.php перед session_start

            ini_set('session.gc_maxlifetime', 604800);

            ini_set('session.save_path', DIR_SYSTEM . 'sessions');

Проверил пишет ли в кастомную папку сессии - пишет.

2) Поменял в session_set_cookie_params(0, '/'); 0 на любое другое значение - перестают работать сессии вообще, авторизация в админке, в лк на сайте и т.д, меняю обратно на 0 - все ок. Аналогично менял setcookie($key, $this->session_id, ini_get('session.cookie_lifetime') - (ini_get('session.cookie_lifetime') менял на другое значение любое, включая как в maxlifetime, - такая же ошибка, перестают работать сессии...Делал var dump ini_get('session.cookie_lifetime') - выдает 0...

Надіслати
Поділитися на інших сайтах


Нашел решение, кому нужно:

в session.php меняете session_set_cookie_params(0, '/'); на session_set_cookie_params(604800, '/');

затем в функции setcookie($key, $this->session_id, перед ini_get('session.cookie_lifetime') добавляете  time() + , то бишь будет так:

setcookie($key, $this->session_id, time() + ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));

Как оказалось это баг в опенкарте, теперь сессию авторизации не сбрасывает после выхода из браузера, ура!)

Надіслати
Поділитися на інших сайтах


07.05.2022 в 23:02, AndreLisif сказал:

Как оказалось это баг в опенкарте, теперь сессию авторизации не сбрасывает после выхода из браузера, ура!)

Это не баг, это знаний не было у вас. В целях защиты, стандарт OpenCart 2.3 сессию нужно удалять после выключения браузера. Если делать хранение сессии на большое время, то лучше добавить ip и разделить сессию админки от каталога.

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.