2011-08-29 67 views
11

Tôi bắt đầu phát triển một giỏ hàng đa cửa hàng trong php, nơi mọi người dùng sẽ có một giỏ mua hàng trong các cửa hàng khác nhau. Tôi muốn biết cách tốt nhất để lưu các chi tiết giỏ mua hàng như tên sản phẩm, id, giá vv, khi người dùng nhấp vào "Thêm vào giỏ hàng". Tôi nghĩ rằng chúng ta có thể lưu nó theo hai cách: a) Phiên b) Bảng Db.Giỏ hàng, Phiên hoặc DB?

Phương pháp nào tốt hơn để lưu tất cả các thông tin này? Tôi muốn làm cho nó an toàn như nó có thể được.

Vui lòng đề xuất.

Cảm ơn

Trả lời

7

Bạn phải biết mức độ nghiêm trọng của dữ liệu. Nếu bạn nghĩ rằng dữ liệu trong giỏ hàng của bạn không quan trọng và không cần thiết cho nhiều phiên mà bạn chỉ có thể làm điều đó với các phiên và lưu một số ghi vào DB.

Thậm chí nếu bạn cần một DB, bạn có thể lưu một số ghi và sử dụng phía máy khách để lưu trữ tạm thời và cuối cùng chuyển nó sang DB của bạn với một số loại cơ chế đồng bộ hóa. Tuy nhiên, nếu dữ liệu của bạn là rất quan trọng và nó là bắt buộc mà nó vẫn tồn tại trong nhiều phiên thì DB sẽ là một lựa chọn lý tưởng vì nó sẽ cung cấp cho bạn nhiều quyền hơn truy cập vào dữ liệu và cũng sẽ dễ dàng thực hiện.

+0

Trong trường hợp sử dụng phiên cho khách hàng mua sắm, bạn muốn càng ít càng tốt được lưu trữ trong đó. 1 vì dữ liệu phiên được chuyển đến trang tiếp theo (tăng thời gian tải), 2 vì dữ liệu quan trọng như giá không được 'lưu vào bộ nhớ cache' trong một phiên vì phiên có thể tồn tại trong một khoảng thời gian dài hơn. (có những trường hợp bạn muốn 'cache' mặc dù vậy, nhưng bạn có ý tưởng đúng không? :) – Frankey

+0

@Frankey biến phiên PHP không được gửi cho khách hàng. Cookie Session ID được sử dụng để chỉ ra cho máy chủ phiên mà nó sẽ liên kết '$ _SESSION' với. –

0

Với việc triển khai DataBase, bạn có kiểm soát chi tiết và bền vững hơn.

Sử dụng phiên để biết người dùng đã đăng nhập giữa các trang, nhưng DataBase lưu trữ dữ liệu quan trọng.

7

Phiên hoặc DB không phải là lựa chọn độc quyền - phiên có thể được lưu trữ trong cơ sở dữ liệu. Trong một số cách bạn phải lấy giỏ hàng cho người dùng. Trong mọi trường hợp, bạn sẽ có phiên cho việc này. Câu hỏi đặt ra là nếu giỏ hàng nên được duy trì giữa các phiên (đối với người dùng đã đăng ký). Trong trường hợp đó, bạn không nên ghép đôi giỏ hàng với phiên. Mọi thứ trở nên phức tạp nếu bạn muốn lưu giỏ hàng cho người dùng đã đăng ký, cho phép chưa đăng ký để có giỏ hàng, và hợp nhất giỏ hàng và giỏ hàng đã lưu trong trường hợp thông tin đăng nhập của người dùng.

Vì vậy, để trả lời câu hỏi của bạn, bạn chỉ nên xóa các yêu cầu của mình. Điều gì có nghĩa là 'giỏ mua hàng trong các cửa hàng khác nhau'? Giỏ hàng sẽ được lưu giữa các lần đăng nhập (ví dụ: người dùng quay lại sau 1 tuần)?

Vì lý do bảo mật, thường được ưu tiên lưu phiên trong cơ sở dữ liệu, vì bạn có thể có thêm bảo vệ có quyền truy cập vào dữ liệu, đặc biệt là trên lưu trữ được chia sẻ.

Các vấn đề liên quan