Ответ 1
Как я понимаю, тележки сохраняются как кавычки, даже для гостей. Зарегистрированные пользователи имеют идентификатор клиента, который хранится с цитатой, гости не так, у их котировки есть нулевой идентификатор клиента, поэтому вы можете обнаружить, что в хранилище много сиротских/неполных котировок в БД. Единственный способ связать гостя с их тележкой - это сохранить идентификатор цитаты в своем сеансе.
Вы можете продлить срок их цитирования, сохраняя идентификатор котировки непосредственно в своем файле cookie с длинным таймаутом, но это приводит к очевидному нарушению безопасности; любой может настроить значение в своем файле cookie и просмотреть любую другую корзину.
Единственный безопасный способ - это создать таблицу жетонов гостя и связать ее с кавычками (на этот раз не жалко кода, там слишком много, чтобы объяснить на низком уровне). Токен является единственной публичной частью и установлен в cookie. Токены должны быть случайными и длинными, скажем, 512 бит/64-символами, но не слишком длинными, потому что они включены в каждый HTTP-заголовок. Каждый раз, когда создается новый сеанс, он может быть возвращающимся гостем, поэтому проверьте наличие токена и посмотрите его в таблице. Возьмите найденный идентификатор цитаты и сохраните это в сеансе, тем самым воскресив старую корзину. Котировки с идентификаторами клиентов не должны быть спасены таким образом, поэтому их следует освобождать, тем более, что клиент изъятия не хочет видеть, что какая-либо часть их учетной записи остается видимой.