Когда Magento использует сессии и когда куки?

9

Я знаю, что Magento имеет следующие основные функции для обработки сеансов и файлов cookie:

Mage::getSingleton('core/cookie');
Mage::getSingleton('core/session');

Когда Magento устанавливает Cookies и когда сеансы PHP? Каковы варианты использования?

Я немного запутался, потому что я знаю, что Magento хранит информацию о корзине Mage::getSingleton('checkout/session')и статус пользователя Mage::getSingleton('customer/session'). Но сессия проверки, кажется, не сессия, а печенье. Потому что, когда я закрываю браузер и снова открываю страницу, товары все еще в корзине.

Означает ли это, что checkout/sessionмодель устанавливает куки, а не глобальную $_SESSIONпеременную?

Rouzbeh
источник

Ответы:

14

Нет, это означает, что сеансы сохраняются с файлом cookie, который содержит идентификатор сеанса. Единственная альтернатива в PHP - это параметр URL, например, ?SID=d41d8cd98f00b204e9800998ecf8427eгде d41d8cd98f00b204e9800998ecf8427eидентификатор сессии.

Короче говоря, данные сеанса хранятся на сервере, но поскольку HTTP не имеет состояния, файл cookie или параметр с идентификатором сеанса необходимо определить правильную сессию.

Magento устанавливает два сеансовых куки-файла, adminhtmlдля внутреннего и frontendвнешнего интерфейса. Модели Session , как 'checkout/session'хранить свои данные в «пространство имен», то есть $_SESSION['checkout'].

Куки-файлы, не связанные с сеансами, которые устанавливает Magento, - это, к примеру, файлы storecookie, которые запоминают и хранят представление, которое вы просматриваете в данный момент.

Фабиан Шменглер
источник
0

Mage::getSingleton('checkout/session')Сохраняет все данные, которые вы выбрали в Flatsпримере таблицы. sales_flat_quote sales_flat_quote_addressи более.

Что это: каждый покупатель при первом посещении получает quote_idуникальное и связанное с данными в других quoteтаблицах, и оно постоянно, поэтому вы всегда можете видеть свою корзину. Эти данные каждый раз, когда вы изменяете корзину, данные и что-то в форме оформления заказа, прежде чем завершить заказ. После того, как вы завершите заказ, все данные котировки будут получены и сохранены в orderтаблицах ep. sales_order_itemsи ваши данные цитаты получают статус отключения. Это происходит каждый раз, когда вы делаете и заказываете.

Mage::getSingleton('customer/session') имеет ваши данные клиента, когда вы вошли в систему.


Я надеюсь, что это имеет смысл для вас. Это может быть легче объяснить с помощью разговора. Способ управления его данными magento сложен и действительно хорошо распределен, но как только вы поймете, как управлять данными и как ими манипулировать. Ты сделал это Esasy торт magento.


ОБНОВИТЬ

это способ получить quote_idсессией

   $session        = Mage::getSingleton('checkout/session');
   $quote_id       = $session->getQuoteId();
Дуарте
источник
Так это quote_idсохраняется в сеансе или куки?
Rouzbeh
в сессии. Файлы cookie - это механизм хранения данных в удаленном браузере и, таким образом, отслеживания или идентификации возвращаемых пользователей.
Дуарте
Это именно то, что я не понимаю. Сессия истекает, когда я закрываю браузер. Но как Magento по-прежнему запоминает quote_idи тем самым элементы корзины при повторном открытии браузера?
Rouzbeh
В вашем сеансе хранится ваш IP, и когда вы вернетесь в Magento, используйте его, чтобы получить ваш quote_idи Magic, и вы снова сможете увидеть свою корзину. У зарегистрированного и не зарегистрированного пользователя есть quote_idцитата. Срок действия данных не истекает
Duarte
1
Хорошо, проверь это. 1) Не зарегистрировано: вы добавили 3 товара в корзину, после чего данные будут сохранены, sales_flat_quoteесли вы удалите куки и кеш. Ваши данные будут потеряны, и ваша корзина будет пуста. Таким образом, не зарегистрированные пользователи их токен основан на куки и кеш. 2) Записано: Те же 3 товара в корзине. Вы очищаете файлы cookie и кеш браузера. Вы выходите из системы, но при входе в систему все еще есть 3 продукта. Вся эта магия управляетсяquote
Дуарте