Quand Magento utilise-t-il les sessions et quand les cookies?

9

Je sais que Magento a les fonctions de base suivantes pour la gestion des sessions et des cookies:

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

Quand Magento définit-il les cookies et quand les sessions PHP? Quels sont les cas d'utilisation?

Je suis un peu confus, car je sais que Magento stocke les informations du panier Mage::getSingleton('checkout/session')et le statut de l'utilisateur Mage::getSingleton('customer/session'). Mais la session de paiement ne semble pas être une session, mais un cookie à la place. Parce que lorsque je ferme le navigateur et rouvre la page, les articles sont toujours dans le panier.

Est-ce à dire que le checkout/sessionmodèle installe des cookies et non la $_SESSIONvariable globale ?

Rouzbeh
la source

Réponses:

14

Non, cela signifie que les sessions sont conservées avec un cookie, qui contient l'ID de la session. La seule alternative en PHP est un paramètre d'URL comme ?SID=d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427eest l'ID de session.

En bref, les données de session sont stockées sur le serveur mais comme HTTP est sans état, un cookie ou un paramètre avec l' ID de session est nécessaire pour identifier la bonne session.

Magento définit deux cookies de session, adminhtmlpour le backend et frontendpour le frontend. Les modèles de session aiment 'checkout/session'stocker leurs données dans un "espace de noms", c'est-à-dire $_SESSION['checkout'].

Les cookies non liés à la session que Magento définit, sont par exemple le storecookie qui se souvient, qui stockent la vue que vous parcourez actuellement.

Fabian Schmengler
la source
0

Mage::getSingleton('checkout/session')Enregistre toutes les données que vous avez sélectionnées dans l' Flatsexemple de tableaux. sales_flat_quote sales_flat_quote_addresset plus.

Qu'est-ce que c'est: chaque client lors de sa première visite reçoit un quote_idqui est unique et une relation avec les données dans d'autres quotetables et c'est persistant c'est pourquoi vous pouvez toujours voir votre panier. Ces données chaque fois que vous modifiez le panier, les données et quelque chose dans votre formulaire de paiement avant de terminer une commande. Après avoir terminé votre commande, toutes les données de devis sont obtenues et enregistrées dans les ordertableaux ep. sales_order_itemset vos données de devis obtiennent un statut de désactivation. Cela se produit chaque fois que vous faites et commandez.

Mage::getSingleton('customer/session') a vos données client lorsque vous êtes connecté.


J'espère que cela a du sens pour vous. Cela peut être plus facile à expliquer en parlant. La façon dont magento gère ses données est complexe et vraiment bien distribuée, mais une fois que vous comprenez comment les données sont gérées et comment les manipuler. Vous l'avez fait Magento gâteau Esasy.


MISE À JOUR

c'est la façon d'obtenir quote_idpar session

   $session        = Mage::getSingleton('checkout/session');
   $quote_id       = $session->getQuoteId();
Duarte
la source
Est-ce donc quote_idenregistré dans une session ou un cookie?
Rouzbeh
en session. Les cookies sont un mécanisme pour stocker des données dans le navigateur distant et ainsi suivre ou identifier les utilisateurs de retour.
Duarte
C'est exactement ce que je ne comprends pas. La session expire lorsque je ferme le navigateur. Mais comment Magento se souvient-il toujours des quote_idarticles et donc du panier lors de la réouverture du navigateur?
Rouzbeh
Votre session stocke votre adresse IP et lorsque vous revenez, Magento l'utilise pour récupérer votre quote_idet Magic vous pouvez voir à nouveau votre panier. L'utilisateur connecté et non connecté a un quote_iddevis Les données n'expirent pas
Duarte
1
Ok, vérifiez ça. 1) Non connecté: vous avez ajouté 3 produits au panier, puis les données sont enregistrées sales_flat_quotesi vous supprimez les cookies et le cache. Vos données sont perdues et votre panier sera vide. Pour les utilisateurs non connectés, leur jeton est basé sur les cookies et le cache. 2) Connecté: mêmes 3 produits dans le panier Et vous effacez les cookies du navigateur et le cache. vous obtenez la déconnexion mais lorsque vous vous connectez, 3 produits sont toujours là. Toute cette magie est gérée parquote
Duarte