2011-08-29 194 views
11

我開始在php中開發一個多商店購物車,每個用戶在不同的商店下都有一個購物車。我想知道當用戶點擊「添加到購物車」時,保存購物車詳細信息(如產品名稱,ID,價格等)的更好方法是什麼。我認爲我們可以通過兩種方式來保存它:a)會話b)Db表。購物車,會話或數據庫?

哪個更好的方法來保存所有這些信息?我想盡可能保證安全。

請建議。

謝謝

回答

7

您必須知道數據的關鍵性。如果您認爲購物車中的數據不重要,並且不需要多個會話,那麼您可以在會話中完成這些操作並保存一些寫入數據庫的操作。

即使您確實需要數據庫,也可以保存一些寫入操作,並將客戶端用於臨時存儲,並最終使用某種同步機制將其移動到您的數據庫。

但是,如果您的數據非常關鍵,而且它必須保持在多個會話中,那麼數據庫將是一個理想的選擇,因爲它會爲您提供訪問數據的更多權力,並且會減輕實施難度。

+0

在爲訪客shoppingcart使用會話的情況下,您希望儘可能少地存儲在其中。 1,因爲會話數據被傳遞到下一頁(加載時間增加),2因爲會話可能存在較長時間,因此諸如價格之類的關鍵數據不應該被緩存在會話中。 (有些情況下,你想'緩存'它,但你明白了吧?:) – Frankey

+0

@Frankey PHP會話變量不會發送到客戶端。會話ID cookie用於向服務器指示它將與'$ _SESSION'關聯的會話。 –

0

通過DataBase實現,您可以精細控制和更好的持久性。

使用會話來了解頁面之間的登錄用戶,但數據庫存儲關鍵數據。

7

會話或數據庫不是唯一選擇 - 會話也可以存儲在數據庫中。在某些方面,您必須爲用戶檢索購物車。在所有情況下,您都會爲此進行會話。問題在於購物車是否應該在會話之間持續存在(針對註冊用戶)。在這種情況下,您不應該將購物車與會話連接起來。如果您想爲註冊用戶保存購物車,允許未註冊以擁有購物車,並且在用戶登錄時合併會話購物車和已保存的購物車,情況就會變得複雜。

所以要回答你的問題,你應該清楚你的要求。 什麼意思是「不同商店下的購物車」? 將在登錄之間保存購物車(例如用戶在1周後回來)?

至於安全性,通常最好將會話保存在數據庫中,因爲您可以有額外的保護可以訪問數據,特別是在共享主機上。