¿Cuándo utiliza Magento las sesiones y cuándo las cookies?

9

Sé que Magento tiene las siguientes funciones principales para el manejo de sesiones y cookies:

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

¿Cuándo establece Magento Cookies y cuándo Sesiones PHP? ¿Cuáles son los casos de uso?

Estoy un poco confundido, porque sé que Magento almacena la información del carrito Mage::getSingleton('checkout/session')y el estado del usuario Mage::getSingleton('customer/session'). Pero la sesión de pago no parece ser una sesión, sino una cookie. Porque cuando cierro el navegador y vuelvo a abrir la página, los artículos todavía están en el carrito.

¿Eso significa que el checkout/sessionmodelo establece cookies y no la $_SESSIONvariable global ?

Rouzbeh
fuente

Respuestas:

14

No, eso significa que las sesiones se mantienen con una cookie, que contiene el ID de la sesión. La única alternativa en PHP es un parámetro de URL como ?SID=d41d8cd98f00b204e9800998ecf8427edonde d41d8cd98f00b204e9800998ecf8427eestá la ID de sesión.

En resumen, los datos de la sesión se almacenan en el servidor, pero como HTTP no tiene estado, una cookie o parámetro con el ID de la sesión es necesaria para identificar la sesión derecha.

Magento establece dos cookies de sesión, adminhtmlpara el backend y frontendpara la interfaz. Los modelos de sesión 'checkout/session'almacenan sus datos en un "espacio de nombres", es decir $_SESSION['checkout'].

Las cookies no relacionadas con la sesión que establece Magento son, por ejemplo, la storecookie que recuerda, qué vista de tienda explora actualmente.

Fabian Schmengler
fuente
0

Mage::getSingleton('checkout/session')Guarda todos los datos que seleccionó en el Flatsejemplo de tablas. sales_flat_quote sales_flat_quote_addressy más.

Qué es esto: cada cliente en su primera visita recibe un mensaje quote_idúnico y una relación con los datos en otras quotetablas y es persistente, por eso siempre puede ver su carrito. Estos datos cada vez que cambia el carrito, los datos y algo en su formulario de pago antes de finalizar un pedido. Después de finalizar su pedido, todos los datos de cotización se obtienen y guardan en las ordertablas ep. sales_order_itemsy sus datos de cotización obtienen un estado de desactivación. Esto sucede cada vez que haces y pides.

Mage::getSingleton('customer/session') tiene sus datos de cliente cuando está conectado.


Espero que esto tenga sentido para ti. Esto puede ser más fácil de explicar hablando. La forma en que magento administra sus datos es compleja y está muy bien distribuida, pero una vez que comprende cómo se administran los datos y cómo manipularlos. Lo hiciste Esasy cake magento.


ACTUALIZAR

esta es la forma de llegar quote_idpor sesión

   $session        = Mage::getSingleton('checkout/session');
   $quote_id       = $session->getQuoteId();
Duarte
fuente
Entonces, ¿se quote_idguarda esto en una sesión o cookie?
Rouzbeh
en sesión. Las cookies son un mecanismo para almacenar datos en el navegador remoto y, por lo tanto, rastrear o identificar a los usuarios que regresan.
Duarte
Eso es exactamente lo que no entiendo. La sesión caduca cuando cierro el navegador. Pero, ¿cómo recuerda Magento los quote_idartículos del carrito y, por lo tanto, cuando vuelve a abrir el navegador?
Rouzbeh
Su sesión almacena su IP y cuando regrese, Magento la usará para obtener su quote_idMagic y podrá ver su Carrito nuevamente. Los usuarios registrados y no registrados tienen una quote_idCotización Los datos no caducan
Duarte
1
Ok, mira esto. 1) No registrado: Agregó 3 productos al Carrito y luego los datos se guardan sales_flat_quotesi elimina las cookies y el caché. Sus datos se pierden y su carrito estará vacío. Entonces, los usuarios no registrados su token se basa en cookies y caché. 2) Registrado: los mismos 3 productos en el carrito y borra las cookies y el caché del navegador. se cierra la sesión, pero cuando inicia sesión, 3 productos siguen ahí. Toda esta magia es administrada porquote
Duarte