+380(66)433-69-36 | |
+380(66)433-69-36 | |
+380(66)433-69-36 |
- BitLocker с GUI под linux
- Ищем вирус elTest
- Работаем с бесплатным SSL сертификатом Letsencrypt с помощью certbot
- Синхронизация ресурсов с удаленного сервера локально
- Применение нестандартного SEO и статус 404
- MySQL синхронизируем права с разных серверов
- IPSec VPN соединение между офисами.
- "Зеркало" сайта на стороне. Донастраиваем nginx
- Дефрагментация таблиц всех баз MySQL
- Месяц в родительном падеже strftime PHP
- INIT скрипт для Dropbox
- osCommerce VAM Edition 226. Ошибки
- PositiveSSL порядок сертификатов
- osCommerce. Создаем модуль доставки
- Восстановление mySQL баз данных
- osCommerce.Перенос магазина в другой домен
- osCommerce.Прячем адмику
- osCommerce. Продление жизни сессий
- osCommerce. Создаем платежный модуль
- 10 причин выбрать нас
- GRUB2 восстановление
- osCommerce не пересчитывает общую сумму заказа
- Список потенциально опасных скриптов
- Отправка файлов из Dropbox по e-mail
- "Черный список" почтовых доменов
- Боремся с назойливыми иностранцами
- Яндекс-Диск, и стоит ли им пользоваться.
- Обновление модуля Интеркассы для osCommerce
- Веб-почта на сайте хостинга
- Подключение Outlook Express к хостингу
osCommerce. Продление жизни сессий
Субъективные заметки - osCommerce |
В базовой версии osCommerce VAM Edition существует довольно таки простая схема управления сессиями. Фактически сессия создается на стороне сервера с уникальным идентификатором и именем, которое можно определить в конфигурационном файле configure.php. Для проверки возможности работы такого механизма применяется двухэтапная подготовка сессии. Во-первых пытаемся установить cookie с тестовым именем и тестовым содержимым. Во время следующего перехода проверяется, была ли установлена эта "печенька" в браузере посетителя. Как правило, сбоя здесь не происходит - уже прошли времена, когда для отключения механизма отслеживания отключались возможности приема cookie. После того, как проверена установка этой тестовой печеньки, предполагается, что механизм cookie и session работает - и уже создается настоящая, постоянная сессия для каждого посетителя. Одна беда. Если рассмотреть созданную переменную сессии, то можно увидеть - время ее жизни равно времени жизни окна браузера. Т.е. как только посетитель закроет окно, и захочет перейти на сайт снова - все будет потеряно. Это связано с тем, что в механизме cookie-session длительность жизни cookie выставляется в 0. т.е. на время сессии. Чем же это плохо? Если посетитель набросал в корзину кучу товара, но не завершил заказ - то при следующем посещении сайта вся корзина, да и многие другие полезные данные могут быть попросту утеряны. Поэтому одним из частых вопросов к изменению кода магазина является увеличение времени жизни корзины клиента - ну , в данном случае - это увеличение времени сессии. Итак, увеличиваем время жизни. Ищем файл /includes/application_top.php и находим в нем строку такого вида(строка примерно 180):
// set the session cookie parameters
if (function_exists('session_set_cookie_params')) {
session_set_cookie_params(0, $cookie_path, $cookie_domain);
}
и меняем параметр 0 на что-то более желанное. Напоминаем, что параметр указывается в секундах, в дне 86400 секунд. Соответственно, если Вы хотите продлить жизнь корзины на 30 дней, нужно записать примерно так:
// set the session cookie parameters
if (function_exists('session_set_cookie_params')) {
session_set_cookie_params(30*86400, $cookie_path, $cookie_domain);
}
В общем-то и все. Еще стоит обратить внимание, что имя домена cookie указанное в configure.php HTTP_COOKIE_DOMAIN должен совпадать с реальным именем Вашего сайта, иначе механизм просто не сработает - что вполне логично. Еще одно замечение. Время жизни cookie при такой записи составит 30 дней с момента входа на сайт. Если необходимо сохранить корзину не меньше чем 30 дней после последнего посещения - то время жизни печеньки нужно обновлять постоянно, т.е. вышеприведенный код должен выполняться каждый раз при посещении сайта посетитетем, и для этого нужно убедиться, что он таки выполняется постоянно.