2011-05-08 76 views
0

我正在使用PHP的電子商務網站,我想實現以下功能:如果用戶未登錄,他可以將產品添加到購物車,登錄後仍然有這些產品。另外,該功能必須以其他方式工作:用戶正在登錄,然後他將產品添加到購物車。電子商務網站的會話處理

我認爲這樣做的好方法是使用會話ID,但在做了一些測試後發現這不是最好的方法。

任何ideeas?

回答

3

爲什麼使用會話不是最好的方式呢?我會說這是。

您可以擁有單獨的基於會話的「未登錄」購物車結構,即正常購物車的精確副本。如果用戶未登錄,則產品將存儲在那裏。

當用戶登錄時,您會將未登錄的購物車的內容與用戶可能已經擁有的用戶專用購物車中的任何物品合併。

該點也是處理產品選擇可能產生的任何衝突的地方(例如,已登錄用戶的購物車中已存在所選產品)。

使用@Codemwnci推薦的方法來存儲產品,或者購物車ID也是一個好主意,因爲它允許用戶稍後回來,並且仍然有他們的購物車內容,您可能需要。

合併的原理也適用於此處,並附加檢查cookie中的產品是否真的有效(它們可能在用戶做出選擇後被刪除,或者用戶可能已經更改了cookie )。

+0

我說這不是一個好方法,因爲我已經試過了。我使用會話ID作爲標識符,當用戶未登錄時,我保存產品和會話ID。登錄後,我會檢查會話ID是否匹配,然後將產品複製到登錄購物車中。在第一次運行時一切正常,但註銷後我仍然有相同的會話ID。哪個不好。 – Psyche 2011-05-08 09:53:30

+0

@Psyche但爲什麼這是一個問題?用戶登錄時,應將購物車內容存儲到*用戶*的數據中,而不是會話數據。會話ID本身與購物車的內容無關,可隨時更改(例如,如果用戶的瀏覽器或連接發生變化)。當用戶註銷時你正在做一個'session_destroy()'嗎? – 2011-05-08 09:59:43

+0

好吧,其實我正在做一個$ _SESSION = array();我認爲這是問題。 – Psyche 2011-05-08 10:01:58

0
session_start(); 
$_SESSION["cartitems"] = "1,2,3"; 
1

您可以使用cookie。只需在cookie中存儲一個代表購物籃的唯一標識符。無論用戶是否登錄或註銷,Cookie標識符都將保持不變,因此數據將被保留。