Khi nào Magento sử dụng phiên và khi cookie?


9

Tôi biết Magento có các chức năng cốt lõi để xử lý phiên và cookie:

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

Khi nào Magento thiết lập Cookies và khi PHP Phiên? Các trường hợp sử dụng là gì?

Tôi hơi bối rối, vì tôi biết Magento lưu trữ thông tin giỏ hàng Mage::getSingleton('checkout/session')và trạng thái của người dùng Mage::getSingleton('customer/session'). Nhưng phiên thanh toán dường như không phải là phiên, mà thay vào đó là cookie. Bởi vì khi tôi đóng trình duyệt và mở lại trang, các mục vẫn còn trong giỏ hàng.

Điều đó có nghĩa là, checkout/sessionmô hình đặt cookie chứ không phải $_SESSIONbiến toàn cục?

Câu trả lời:


14

Không, điều đó có nghĩa là các phiên được duy trì với một cookie có chứa ID của phiên. Lựa chọn duy nhất trong PHP là một tham số URL như ?SID=d41d8cd98f00b204e9800998ecf8427enơi d41d8cd98f00b204e9800998ecf8427elà ID phiên.

Trong Short, dữ liệu phiên được lưu trữ trên máy chủ nhưng vì HTTP không trạng thái, nên một cookie hoặc tham số có id phiên là cần thiết để xác định đúng phiên.

Magento đặt hai cookie phiên, adminhtmlcho phụ trợ và frontendcho frontend. Các mô hình phiên như 'checkout/session'lưu trữ dữ liệu của chúng trong một "không gian tên", nghĩa là $_SESSION['checkout'].

Các cookie không liên quan đến phiên mà Magento đặt, ví dụ như storecookie ghi nhớ, cửa hàng xem bạn hiện đang duyệt.


0

Mage::getSingleton('checkout/session')Lưu tất cả dữ liệu bạn đã chọn trong Flatsbảng ví dụ. sales_flat_quote sales_flat_quote_addressvà hơn thế nữa.

Đây là gì: mọi khách hàng trong lần truy cập đầu tiên nhận được một quote_idđiểm duy nhất và mối quan hệ với dữ liệu trong quotecác bảng khác và đó là lý do tại sao bạn luôn có thể nhìn thấy Giỏ hàng của mình. Dữ liệu này mỗi khi bạn thay đổi giỏ hàng, dữ liệu và một cái gì đó trong biểu mẫu thanh toán trước khi bạn hoàn thành một đơn đặt hàng. Sau khi bạn hoàn thành đơn đặt hàng, tất cả dữ liệu báo giá được nhận và lưu trong orderbảng ep. sales_order_itemsvà dữ liệu báo giá của bạn nhận được một trạng thái vô hiệu hóa. Điều này xảy ra mỗi khi bạn thực hiện và đặt hàng.

Mage::getSingleton('customer/session') có dữ liệu khách hàng của bạn khi bạn đăng nhập.


Tôi hy vọng điều này có ý nghĩa với bạn. Điều này có thể dễ dàng hơn để giải thích bằng cách nói chuyện. Cách thức quản lý dữ liệu của anh ấy rất phức tạp và được phân phối thực sự tốt nhưng một khi bạn hiểu cách quản lý dữ liệu và cách thao tác với nó. Bạn đã làm nó Esasy bánh magento.


CẬP NHẬT

đây là cách để có được quote_idtheo phiên

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

Vì vậy, điều này được quote_idlưu trong một phiên hoặc cookie?
Rouzbeh

trong phiên giao dịch. Cookies là một cơ chế để lưu trữ dữ liệu trong trình duyệt từ xa và do đó theo dõi hoặc xác định người dùng quay trở lại.
Duarte

Đó chính xác là những gì tôi không hiểu. Phiên không hết hạn khi tôi đóng trình duyệt. Nhưng làm thế nào để Magento vẫn nhớ quote_idvà từ đó giỏ hàng khi mở lại trình duyệt?
Rouzbeh

Phiên của bạn lưu trữ IP của bạn và khi bạn quay lại Magento, hãy sử dụng nó để nhận quote_idvà Magic của bạn, bạn có thể gặp lại Giỏ hàng của mình. Người dùng đã đăng nhập và chưa đăng nhập có quote_idDữ liệu được trích dẫn không hết hạn
Duarte

1
Ok, kiểm tra cái này 1) Chưa đăng nhập: Bạn đã thêm 3 sản phẩm vào Giỏ hàng sau đó dữ liệu sẽ được lưu sales_flat_quotenếu bạn xóa cookie và bộ đệm. Dữ liệu của bạn bị mất và Giỏ hàng của bạn sẽ trống. Vì vậy, người dùng không đăng nhập mã thông báo của họ dựa trên cookie và bộ đệm. 2) Đã đăng nhập: Cùng 3 sản phẩm trong Giỏ hàng và bạn xóa cookie và bộ đệm của Trình duyệt. bạn nhận được đăng xuất nhưng khi bạn đăng nhập 3 sản phẩm vẫn còn đó. Tất cả phép thuật này được quản lý bởiquote
Duarte
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.