Magento何时使用会话,何时使用cookie?


9

我知道Magento具有以下用于会话和Cookie处理的核心功能:

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

Magento什么时候设置Cookies,什么时候设置PHP会话?有哪些用例?

我有点困惑,因为我知道Magento将购物车信息存储在中Mage::getSingleton('checkout/session'),并将用户的状态存储在中Mage::getSingleton('customer/session')。但是结帐会话似乎不是一个会话,而是一个cookie。因为当我关闭浏览器并重新打开页面时,这些物品仍在购物车中。

这是否意味着该checkout/session模型设置了Cookie而不是全局$_SESSION变量?

Answers:


14

不,这意味着会话将使用cookie持久化,该cookie包含会话的ID。在PHP中唯一的选择是像一个URL参数?SID=d41d8cd98f00b204e9800998ecf8427e,其中d41d8cd98f00b204e9800998ecf8427e是会话ID。

简而言之,会话数据存储在服务器上,但是由于HTTP是无状态的,因此必须使用具有会话ID的cookie或参数来标识正确的会话。

Magento adminhtml为后端和frontend前端设置两个会话cookie 。像会话模型一样,'checkout/session'将其数据存储在“命名空间”(即)中$_SESSION['checkout']

Magento设置的与会话无关的cookie,例如store,记住的cookie,用于存储您当前浏览的存储视图。


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') 登录时获取客户数据。


我希望这对您有意义。通过交谈可以更容易解释。比起magen来管理他的数据的方法更为复杂,而且分布确实很好,但是一旦您了解了数据的管理方式和操作方式。您做到了Esasy蛋糕magento。


更新

这是quote_id通过会话获得的方式

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

那么这是quote_id保存在会话或cookie中吗?
Rouzbeh'3

在会话中。Cookies是一种机制,用于在远程浏览器中存储数据,从而跟踪或识别回头用户。
Duarte

那正是我不明白的。当我关闭浏览器时,会话确实过期。但是,Magento quote_id在重新打开浏览器时仍如何记住购物车中的物品?
Rouzbeh 2015年

您的会话将存储您的IP,当您再次使用Magento来获取IP和quote_idMagic时,您可以再次看到您的购物车。已登录和未登录的用户的quote_id报价数据不会过期
Duarte 2015年

1
好的,检查一下。 1)未记录:您在购物车中添加了3种产品,sales_flat_quote如果您删除Cookie和缓存,数据将保存在其中。您的数据丢失,购物车将为空。因此,未登录的用户其令牌基于cookie和缓存。2)已记录:购物车中有3种产品,您清除了浏览器cookie和缓存。您将注销,但登录3个产品时仍在那里。所有这些魔力都是由quote
Duarte
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.