Как Magento сохраняет вашу корзину? - PullRequest
13 голосов
/ 07 декабря 2011

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

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

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

Ответы [ 3 ]

22 голосов
/ 08 декабря 2011

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

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

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

9 голосов
/ 08 декабря 2011

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

С уважением, боти

1 голос
/ 08 августа 2016

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

Товары в корзине сохраняются в 'sales_flat_quote_item', связанном с цитатой 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...