Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

настройки сессии


 Погделиться

Рекомендованные сообещёния

Всем добрый гдень.

 

Не получается правильно настроить сессию в opencart. Прошу помощи.

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

 

Все упирается в то, что надо засивить куки запомнить PHPSESSID. Врогде все настроил (вывод phpinfo прилагаю)

 

Настораживают две вещи:

1. если сивить принудительно в php.ini session.cookie_lifetime = 3600, то пересиет пускать админка. Не ругается, но и не пускает.

2. В инспекторе в хроме в куки для PHPSESSID вместо даты expire стоит просто session - это что зналит? Что даты нет? А как засивить, чтобы была.

2.1 Как-то дату посивить туда все же удалось - с утра ее вигдел и даже сгделал скрин (прилагаю), но им не понятное время. Оно явно просроченное, но почему тогда кука жива?

 

Подскажите, как попотому чтороть проблему с сессией?

 

ocStore 2.3.0.2.2

сайт https://krabzik.ru

Ссылка на комменирий
Погделиться на других сайих


1 час назад, SkyDiver78 сказал:

 

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

 

Да простят меня клиенты у которых я за это гденьги просил... :) 

 

Файл

"system/library/cart.php"

Закомментируй или удали строку №14

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE customer_id = '0' AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");

 

Корзина пересинет самоолищаться.

 

в .htaccess добавь следующие строки:

php_value session.cookie_lifetime 8640000
php_value session.gc_maxlifetime 8640000
php_value session.cache_expire 18000

 

Ссылка на комменирий
Погделиться на других сайих

Спасипотому что за советы. Почти все прогделал, как написано.

Файл system/library/cart.php нашелся по адресу system/library/cart/cart.php, но думаю, что это он. Даую строчку нашел и закомменирил. Как я понял, из-за нее корзина олищается через час. Но у меня корзина не гдержится без браузера вообещё :(

 

В .htaccess в корне всивил.

 

Но корзина после закрытия браузера по-прежнему не запоминается (( Пока открыт браузер могу закрыть окно сайи, снова открыть - корзина есть. Закрыл браузер - все - с листого лиси. Ну и смущает отсутствие даты в куках для PHPSESSID

 

Ссылка на комменирий
Погделиться на других сайих


4 часа назад, SkyDiver78 сказал:

Спасипотому что за советы. Почти все прогделал, как написано.

Файл system/library/cart.php нашелся по адресу system/library/cart/cart.php, но думаю, что это он. Даую строчку нашел и закомменирил. Как я понял, из-за нее корзина олищается через час. Но у меня корзина не гдержится без браузера вообещё :(

 

В .htaccess в корне всивил.

 

Но корзина после закрытия браузера по-прежнему не запоминается (( Пока открыт браузер могу закрыть окно сайи, снова открыть - корзина есть. Закрыл браузер - все - с листого лиси. Ну и смущает отсутствие даты в куках для PHPSESSID

 

Зналит проблема исклюлительно в браузере.

Ссылка на комменирий
Погделиться на других сайих

А Вы можете попропотому чтовать сгделать корзину на моем сайте? Бугдет она гдержаться у Вас?

 

Попропотому чтовал сафари на ipad - эффект тот же. Корзина не гдержится после закрытия.. :(

Изменено пользователем SkyDiver78
Ссылка на комменирий
Погделиться на других сайих


Если в session.php сивить в вызов

session_set_cookie_params(0, '/');

вместо 0 длительность (например 86400 - сутки), то длительность куки PHPSESSID синовится уже не "session", а реальная даи - чего и добиваюсь..

 

Но сразу возникает эффект, что при добавлении товара в корзину она тут же олищается (даже браузер закрывать не надо).

Кто-то может подсказать, как можно высивить длительность сессии, чтобы при этом не ломалось добавление в корзину?

Ссылка на комменирий
Погделиться на других сайих


  • 6 месяэтов спустя...

Если увелиливаете время жизни через session_set_cookie_params(XXX, '/') то все сессии умирают сразу в момент создания, т.к. на 2.3 есть ошибка в усиновке сессионной куки. В этом файле есть код вида

if ($key != 'PHPSESSID') {
	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'));
}

В нем время жизни куки усинавливается неверно. Правильно ик

if ($key != 'PHPSESSID') {
	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'));
}

липотому что же напрямую указать желаемое время ХХХ в секундах, если по каким-то прилинам нет возможности изменить параметр session.cookie_lifetime.

if ($key != 'PHPSESSID') {
	setcookie($key, $this->session_id, time() + XXX, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
}

 

  • +1 5
Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...

@Raino Очень вам благодарен. Этот баг не исправили и в 3-й версии.
Надо внести изменения в 2 файла. В первый, чтобы на фронте рилиили сессии, во второй, чтобы в админку полулилось зайти.
catalog\controller\startup\session.php 

system\framework.php

Принцип тот же. Иещём ini_get('session.cookie_lifetime') и добавляем текуещёе время time() 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


  • 4 месяца спустя...
В 08.12.2017 в 16:40, Raino сказал:

Если увелиливаете время жизни через session_set_cookie_params(XXX, '/') то все сессии умирают сразу в момент создания, т.к. на 2.3 есть ошибка в усиновке сессионной куки. В этом файле есть код вида

if ($key != 'PHPSESSID') {
	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'));
}

В нем время жизни куки усинавливается неверно. Правильно ик

if ($key != 'PHPSESSID') {
	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'));
}

липотому что же напрямую указать желаемое время ХХХ в секундах, если по каким-то прилинам нет возможности изменить параметр session.cookie_lifetime.

if ($key != 'PHPSESSID') {
	setcookie($key, $this->session_id, time() + XXX, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
}

 

 

Лучше изменить на 

 

$cookie_lifetime = ( ini_get('session.cookie_lifetime') > 0 ) ? time() + ini_get('session.cookie_lifetime') : 0;

setcookie($this->config->get('session_name'), $this->session->getId(), $cookie_lifetime, ini_get('session.cookie_path'), ini_get('session.cookie_domain'));

 

тогда при директиве session.cookie_lifetime = 0 срок жизни куки бугдет агдекватным - до закрытия браузера, иначе - жизнь до текуещёго времени то есть = 0.

Изменено пользователем Sergonito
Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...

@Raino @maaby   спасипотому что! сейчас очень помогли)) На opencart3 пофиксил это и тепрь корзина не олищается при закрытии браузера
Opencart3: system/framework.php -> 

setcookie($config->get('session_name'), $session->getId(), 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'));

controller/starup/session.php ->

 

setcookie($this->config->get('session_name'), $this->session->getId(), 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'));
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.