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')。しかし、チェックアウトセッションはセッションではなく、Cookieのようです。ブラウザーを閉じてページを再度開いたとき、アイテムはまだカートに残っているからです。

つまり、checkout/sessionモデルはグローバル$_SESSION変数ではなくCookieを設定するということですか?

回答:


14

いいえ、それはセッションがセッションのIDを含むCookieで永続化されることを意味します。PHPの唯一の代替手段は、がセッションID ?SID=d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427eあるようなURLパラメータです。

つまり、セッションデータはサーバーに格納されますが、HTTPはステートレスであるため、正しいセッションを識別するには、セッションIDを含むCookieまたはパラメーターが必要です。

Magentoはadminhtml、バックエンドfrontend用とフロントエンド用の2つのセッション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') ログに記録されたときの顧客データがあります。


これがあなたにとって理にかなっているといいのですが。これは話すことで簡単に説明できます。magentoが彼のデータを管理する方法は複雑で、本当にうまく分散されていますが、データの管理方法と操作方法を理解すると、あなたはそれをEsasyのケーキマゼントにしました。


更新

これはquote_idセッションで取得する方法です

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

これはquote_idセッションまたはCookieに保存されますか?
Rouzbeh 2015年

セッション中。Cookieは、リモートブラウザにデータを保存するためのメカニズムであり、リターンユーザーを追跡または識別します。
Duarte 2015年

それはまさに私が理解していないことです。ブラウザを閉じると、セッションが期限切れになります。しかし、Magento quote_idは、ブラウザを再度開いたときに、カートのアイテムを覚えているので、カートのアイテムはどうですか?
Rouzbeh 2015年

セッションにはIPが保存され、Magentoに戻ったときにそれを使用してquote_idとMagic を取得すると、カートが再び表示されます。ログに記録されたユーザーと記録されていないユーザーのquote_id見積もりデータに有効期限はありません
Duarte

1
さて、これを確認してください。 1)ログに記録されません:カートに3つの製品を追加しましたsales_flat_quote。Cookieとキャッシュを削除すると、データが保存されます。データが失われ、カートは空になります。したがって、ログに記録されていないユーザーのトークンは、Cookieとキャッシュに基づいています。2)ログ:カートに同じ3つの製品が含まれていて、ブラウザのCookieとキャッシュをクリアします。ログアウトしますが、ログインすると3つの製品がまだそこにあります。この魔法はすべて管理されていますquote
Duarte
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.