Коли Magento використовує сеанси та коли cookie?


9

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

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

Коли Magento встановлює файли cookie та коли PHP-сеанси? Які випадки використання?

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

Чи означає це, що checkout/sessionмодель встановлює файли cookie, а не глобальну $_SESSIONзмінну?

Відповіді:


14

Ні, це означає, що сеанси зберігаються з файлом cookie, який містить ідентифікатор сеансу. Єдина альтернатива в PHP - це параметр URL, наприклад, ?SID=d41d8cd98f00b204e9800998ecf8427eде d41d8cd98f00b204e9800998ecf8427eзнаходиться ідентифікатор сеансу.

Якщо коротко, дані сеансу зберігаються на сервері, але оскільки HTTP не має статусу, cookie або параметр з ідентифікатором сеансу необхідний для ідентифікації правильного сеансу.

Magento встановлює два сеансових файли cookie, як adminhtmlдля бекенда, так і frontendдля фронта. Моделі сесій схожі на 'checkout/session'зберігання своїх даних у "просторі імен", тобто $_SESSION['checkout'].

Файли cookie, які не пов’язані з сеансом, встановлені Magento, - це, наприклад, storeфайл cookie, який запам'ятовується, який зберігає перегляд, який ви переглядаєте.


0

Mage::getSingleton('checkout/session')Зберігає всі вибрані вами дані в Flatsприкладі таблиць. sales_flat_quote sales_flat_quote_addressі більше.

Що це таке: кожен клієнт під час першого відвідування отримує quote_idунікальний та зв’язок із даними в інших quoteтаблицях, і він є стійким, тому ви завжди можете побачити свій кошик. Ці дані щоразу, коли ви міняєте кошик, дані та щось у формі оформлення замовлення, перш ніж закінчити замовлення. Після завершення замовлення всі дані цитат отримуються та зберігаються в orderеп таблиць. sales_order_itemsі ваші дані котирування набувають статусу відключення. Це відбувається щоразу, коли ви робите та замовляєте.

Mage::getSingleton('customer/session') має ваші клієнтські дані під час реєстрації.


Я сподіваюся, що це має сенс для вас. Це можна легше пояснити, розмовляючи. Шлях, ніж магенто керувати своїми даними, є складним і дуже добре розподіляється, але як тільки ви зрозумієте, як керувати даними та як ними маніпулювати. Ви зробили це торт Esasy magento.


ОНОВЛЕННЯ

це спосіб дістатися quote_idсеансом

   $session        = Mage::getSingleton('checkout/session');
   $quote_id       = $session->getQuoteId();

Так це quote_idзбережено в сеансі чи файлі cookie?
Рузбе

в сесії. Файли cookie - це механізм зберігання даних у віддаленому браузері і таким чином відстеження або ідентифікація користувачів, що повертаються.
Дуарте

Саме це я не розумію. Сеанс закінчується, коли я закриваю браузер. Але як Magento все ще запам'ятовує quote_idі тим самим кошить предмети при повторному відкритті браузера?
Рузбе

Ваш сеанс зберігає ваш IP-адресу, і коли ви повернетесь Magento, використовуйте його, щоб отримати свій quote_idта Magic, ви зможете побачити свій кошик знову. У користувача, який не ввійшов у систему, quote_idдані про котирування не закінчуються
Duarte

1
Гаразд, перевіри це. 1) Не зареєстровано: Ви додали 3 товари в кошик, тоді дані зберігаються, sales_flat_quoteякщо ви видаляєте файли cookie та кеш. Ваші дані втрачені, і Ваш кошик буде порожнім. Тому не ввійшли користувачі, їх маркер базується на файлах cookie та кеші. 2) Увійшли в систему: Ті самі 3 продукти у кошику. Ви очистите файли cookie та кеш браузера. ви отримуєте вихід, але коли ви входите в 3 продукти, які все ще є. Цією магією керує компаніяquote
Duarte
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.