Гостевая корзина пропадает после закрытия браузера: настройка save_anonymous_fuser_cookie в Битрикс
Как это выглядит для пользователя
Посетитель складывает товары в корзину без входа в личный кабинет, переключается между вкладками или закрывает браузер, а при следующем визите содержимое пропало. Одновременно при авторизации склад корзины ведёт себя предсказуемее. Такой симптом типично сочетается с потерей «гостевой» части склада именно когда заканчивается PHP-сессия, потому что идентификатор временного покупателя (FUSER) больше не совпадает с тем, который хранился на сервере.
Связь с модулем sale
В ядре существует отдельный флаг «сохранять анонимного пользователя интернет-магазина в cookie». Когда значение выключено, система может полагаться исключительно на идентификатор текущего HTTP-сеанса, и после истечения срока действия файла cookie сессии гость получает новый технический ключ — логическая корзина остаётся в базе со старым ключом и перестаёт отображаться. Включение опции даёт возможность промаркировать браузер устойчивым идентификатором, который переживает перезапуск вкладки и ограниченный простой между визитами.
Что нужно узнать в первую очередь
Перед правками кода убедитесь, что куки браузера не блокируются и домен второго уровня не расходится с поддоменом каталога — иначе даже активная опция не дойдёт до клиента. Для быстрой технической диагностики достаточно прочитать текущее значение настройки с помощью D7-хелперов конфигурации.
use Bitrix\Main\Config\Option;
$cookieLinkageMode = Option::get('sale', 'save_anonymous_fuser_cookie');
// Ожидаемые литералы: 'Y' (включено) или 'N' (выключено)
echo htmlspecialchars($cookieLinkageMode, ENT_QUOTES | ENT_HTML5);
// Дополнительно можно вывести сырой дамп через var_export();
Строковое значение в базе уже подсказывает решение: если вы видите 'N', а бизнес-логика требует удержание гостевой тележки дольше сессионного промежутка, это прямое совпадение с симптоматикой описанной выше.
Как включить поддержку через API
Смена значения делается вызовом Option::set; модуль здесь всегда строка sale, имя ключа — литеральная константа ядра. Выполните код один раз там, где у вас принято хранить инициализационные миграции, либо во временном служебном скрипте под супервизией администратора.
use Bitrix\Main\Config\Option;
Option::set('sale', 'save_anonymous_fuser_cookie', 'Y');
Повторите проверку чтением — убедитесь, что в ответе появился символ включения (Y). Если проект уже кеширует настройки на уровне собственной обёртки, синхронизируйте с ней результат вручную.
Откуда ещё берётся «обнуление»
- Нестабильная работа общей пользовательской сессии (
PHPSESSIDи аналоги): короткийsession.gc_maxlifetime, кластер без sticky-сессии, пересборка подписи между узлами. - Фронт переведён на другой домен или поддомен без единых атрибутов cookie — браузер не передаёт сохранённые метки.
- CDN или прокси удаляют заголовки
Set-Cookieна статических узлах; корзину вызывает именно недоступный для записи узел. - Второй вкладкой выполнен сценарий, который программно сбрасывает идентификатор временного клиента интернет-магазина — редкая, но возможная побочная ветка кастомного кода.
На практике после перевода значения опции на положительный и валидации работы заголовков cookie воспроизведение жалобы должно резко сократиться. Если нет — требуется последовательный аудит трассировки сессионных файлов и политики SameSite у обратных прокси.
Юридические и продуктовые замечания
Использование долгоживущих технических маркеров для гостевой корзины попадает в ту же классификацию, что и любые операционные идентификаторы: уточняйте с юристами текст согласия и положения политики обработки персональных данных, если они применимы к вашей юрисдикции. С точки зрения технологии параметр управляет исключительно устойчивостью внутреннего технического ключа FUSER, а не рекламным трекингом.
Что сохранить в памятке команды
- Диагностика: вы читаете ключ
save_anonymous_fuser_cookieмодуляsale. - Исправление: переход значения из
NвYсредствамиBitrix\Main\Config\Option. - Верификация: повторное чтение и ручное тестирование сценария «закрыл вкладку — вернулся через час», кросс-браузерно.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии