2014-06-14 108 views
0

我嘗試執行購物車。在開始時,我將所選產品保存在一個數組SESSION 中,而客戶訂單未完成。 但是,我的工作並不完美,因爲我沒有使用會話ID,也沒有將所選產品 插入數據庫,因此我無法管理會話。 現在,我想改進我的代碼,爲每個客戶獲取唯一的sessionID。 我看到更多的例子在這個問題上,在這裏我想知道哪個更好用:購物車和會話ID

//session_id($_GET['PHPSESSID']); session_start(); 
$session_id=session_id('PHPSESSID'); 

- 或 -

session_start(); 
$sessionID = $_COOKIE['PHPSESSID']; 

話,我會選擇的產品保存到數據庫寬度此$ SESSION_ID 。

需要注意的是,我用一個簡單的方式來完成客戶訂單和存儲選擇 項目分貝,這是通過客戶的電子郵件驗證。經過custmer驗證​​他/她的電子郵件 我要回去他/她他/她可以更新他/她的購物車物品或繼續購物的頁面。 這裏如何獲得$ session_id來做到這一點。 請指導我在這個issue.Thanks

+0

wat將存儲對象ShoppingCart放入$ _SESSION數組中? –

回答

2

他們都應該返回相同的事情,它只是兩種不同的方式引用它。儘管我會建議您不要在會話ID中鍵入用戶,因爲用戶可以隨時刪除Cookie(這是存儲ID的位置),也可能會過期,然後您將不得不創建一個全新的用戶,這會導致您丟失所有的記錄每一次。我建議將用戶鍵入數據庫中的主鍵。

+0

感謝cujomalainey,好吧,如果我給每個會話的主鍵,是否真的要在電子郵件驗證後完成客戶訂單 我應該發送該密鑰與按摩然後當用戶驗證 他的電子郵件密鑰將傳回到我的網站顯示結算順序。 另一個問題, - 可以通過session_id('PHPSESSID')或從數據庫自動生成此密鑰嗎? -一般來說,在這裏使用session_id('PHPSESSID')是否有其他原因很重要? –

+1

我個人從不使用PHPSESSID,我只是覺得它周圍有很多風險。通常我使用我的MySQL數據庫中的主鍵。只要值被轉義,當你正在進行查詢時,它們就是安全的。 MySQL還可以自動增加其字段,以便照顧具有唯一的ID。是的,他們可以存儲在一個電子郵件的鏈接,一些其他人雖然更喜歡使用一個令牌(如當前時間的MD5散列)來安全地放在他們的電子郵件鏈接,因爲它不保證預期的用戶將接收但它在你的網站上,因爲他們只是認證。 – cujo

1

只需將會話ID存儲在cookie中,直到(例如2天)用戶在電子郵件驗證後返回站點,然後完成訂單。