Kapan Magento menggunakan sesi dan kapan cookie?

9

Saya tahu Magento memiliki fungsi inti berikut untuk sesi dan penanganan cookie:

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

Kapan Magento mengatur Cookie dan kapan Sesi PHP? Apa kasus penggunaannya?

Saya agak bingung, karena saya tahu Magento menyimpan informasi keranjang Mage::getSingleton('checkout/session')dan status pengguna di Mage::getSingleton('customer/session'). Tetapi sesi checkout sepertinya bukan sesi, melainkan cookie. Karena ketika saya menutup browser dan membuka kembali halaman item masih dalam keranjang.

Apakah itu berarti, bahwa checkout/sessionmodel menetapkan cookie dan bukan $_SESSIONvariabel global ?

Rouzbeh
sumber

Jawaban:

14

Tidak, itu berarti bahwa sesi tetap menggunakan cookie, yang berisi ID sesi. Satu-satunya alternatif dalam PHP adalah parameter URL seperti di ?SID=d41d8cd98f00b204e9800998ecf8427emana d41d8cd98f00b204e9800998ecf8427eID sesi.

Singkatnya, data sesi disimpan di server tetapi karena HTTP tidak memiliki kewarganegaraan, cookie atau parameter dengan id sesi diperlukan untuk mengidentifikasi sesi yang tepat.

Magento menetapkan dua cookie sesi, adminhtmluntuk backend dan frontenduntuk frontend. Model sesi seperti 'checkout/session'menyimpan data mereka di "namespace", yaitu $_SESSION['checkout'].

Cookie yang tidak terkait sesi yang ditetapkan Magento, misalnya storecookie yang mengingat, yang menyimpan tampilan yang saat ini Anda jelajahi.

Fabian Schmengler
sumber
0

Mage::getSingleton('checkout/session')Menyimpan semua data yang Anda pilih dalam Flatstabel contoh. sales_flat_quote sales_flat_quote_addressdan lainnya.

Apa ini: setiap pelanggan pada kunjungan pertamanya menerima quote_idmana yang unik dan hubungan dengan data di quotetabel lain dan itu persisten itu sebabnya Anda selalu dapat melihat Keranjang Anda. Data ini setiap kali Anda mengganti keranjang, data, dan sesuatu dalam formulir checkout Anda sebelum Anda menyelesaikan pesanan. Setelah Anda menyelesaikan pesanan, semua data penawaran didapat dan disimpan dalam ordertabel ep. sales_order_itemsdan data penawaran Anda mendapat status penonaktifan. Ini terjadi setiap kali Anda membuat dan memesan.

Mage::getSingleton('customer/session') memiliki data pelanggan Anda saat Anda login.


Saya harap ini masuk akal untuk Anda. Ini bisa lebih mudah dijelaskan dengan berbicara. Cara Magento mengelola datanya rumit dan benar-benar bagus, tetapi begitu Anda memahami bagaimana mengelola data dan cara memanipulasinya. Anda melakukannya Magento kue Esasy.


MEMPERBARUI

ini adalah cara untuk mendapatkan quote_idsesi

   $session        = Mage::getSingleton('checkout/session');
   $quote_id       = $session->getQuoteId();
Duarte
sumber
Jadi ini quote_iddisimpan dalam sesi atau cookie?
Rouzbeh
di sesi. Cookie adalah mekanisme untuk menyimpan data di browser jarak jauh dan dengan demikian melacak atau mengidentifikasi pengguna yang kembali.
Duarte
Itulah tepatnya yang tidak saya mengerti. Sesi tidak kedaluwarsa saat saya menutup browser. Tapi bagaimana Magento masih ingat quote_iditem dan dengan demikian keranjang ketika membuka kembali browser?
Rouzbeh
Sesi Anda menyimpan IP Anda dan ketika Anda kembali Magento menggunakannya untuk mendapatkan Anda quote_iddan Magic Anda dapat melihat Keranjang Anda lagi. Pengguna yang masuk dan tidak masuk memiliki quote_idData Penawaran yang tidak kedaluwarsa
Duarte
1
Ok, periksa ini. 1) Tidak dicatat: Anda menambahkan 3 produk ke Keranjang kemudian data disimpan sales_flat_quotejika Anda menghapus cookie dan cache. Data Anda hilang dan Keranjang Anda akan kosong. Jadi, pengguna yang tidak masuk token mereka berdasarkan cookie dan cache. 2) Dicatat: 3 produk yang sama dalam Keranjang Dan Anda menghapus cookie dan cache Browser. Anda mendapatkan logout tetapi ketika Anda login 3 produk masih ada. Semua keajaiban ini dikelola olehquote
Duarte