Как Magento сохраняет вашу корзину?

Magento имеет два способа хранения тележки. Записанные пользователи могут иметь корзину, определенную до тех пор, пока вы хотите ее определить, и она хранится в базе данных, привязанной к номеру пользователя. Не регистрируемые пользователи, похоже, связаны тем, как долго ваш сайт хранит переменные сеанса. Это приводит меня к двум вопросам.

1) Правильно ли я полагаю, что не зарегистрированные в тележках пользователей привязаны к тайм-аутам сеанса?

2) Так как Magento/Varien рекомендует довольно короткое время для убийства переменных сеанса (обычно только 4 часа), если вопрос один является истинным, существует ли способ сохранить незарегистрированную корзину без изменения переменной тайм-аута сеанса

Ответ 1

Как я понимаю, тележки сохраняются как кавычки, даже для гостей. Зарегистрированные пользователи имеют идентификатор клиента, который хранится с цитатой, гости не так, у их котировки есть нулевой идентификатор клиента, поэтому вы можете обнаружить, что в хранилище много сиротских/неполных котировок в БД. Единственный способ связать гостя с их тележкой - это сохранить идентификатор цитаты в своем сеансе.

Вы можете продлить срок их цитирования, сохраняя идентификатор котировки непосредственно в своем файле cookie с длинным таймаутом, но это приводит к очевидному нарушению безопасности; любой может настроить значение в своем файле cookie и просмотреть любую другую корзину.

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

Ответ 2

Взгляните на свою базу данных magento по таблице "sales_flat_quote"

С уважением boti

Ответ 3

Тележки сохраняются в таблице "sales_flat_quote"

Элементы в корзине сохраняются в 'sales_flat_quote_item', связанные цитатой quote entity_id

Наконец, параметры элементов сохраняются в 'sales_flat_quote_item_option', связанные с item_id выше

Поэтому для просмотра всех элементов и параметров для сохраненной цитаты

select sfqi.item_id, sfqio.code, sfqio.value from sales_flat_quote AS sfq, sales_flat_quote_item AS sfqi, sales_flat_quote_item_option AS sfqio where sfqi.item_id = sfqio.item_id AND sfqi.quote_id = sfq.entity_id AND sfq.entity_id = '133940';