我正在創建購物車,我只是使用會話來更新購物車。但我想將它設置爲cookie並且得到它進一步使用...我的購物車會話是:在Cookie中設置購物車會話
$_SESSION['cart'][$pid] = array("item_id" => $pid, "quantity" => $tobesend, "price" => $price_per_q);
我想這整件事設置成餅乾。請幫助。 我想知道什麼是好處,如果我使用網絡存儲來代替餅乾這裏...
謝謝。
我正在創建購物車,我只是使用會話來更新購物車。但我想將它設置爲cookie並且得到它進一步使用...我的購物車會話是:在Cookie中設置購物車會話
$_SESSION['cart'][$pid] = array("item_id" => $pid, "quantity" => $tobesend, "price" => $price_per_q);
我想這整件事設置成餅乾。請幫助。 我想知道什麼是好處,如果我使用網絡存儲來代替餅乾這裏...
謝謝。
Cookies被人誰使用用戶的瀏覽器,最好的事情,以訪問do是將購物車會話存儲在數據庫中,並且只將該數據庫條目的行ID存儲在cookie中。所以基本上:
需要// Get the row id from the cookie
$id = $_COOKIE['cart_session_data_id'];
// Use this ID and retrieve the data from the database
爲什麼網絡存儲,而不是餅乾時
// Store the data in the database, in whatever form you choose
$id = last_insert_id(); // Get the ID of the row in which this information is stored
// Store the id in a cookie
setcookie("cart_session_data_id", $id, time() + 3600 * 24); /* expire in 1 day */
現在你從數據庫中檢索數據返回到會議?
更多資源的限制:
如@Joshua Kissoon提到的,餅乾應僅用於非敏感信息和用於數據的量小。如果你需要使用一個cookie,你可以在一個陣列將數據和序列化:
$cart = array($pid => array("item_id" => $pid, "quantity" => $tobesend, "price" => $price_per_q));
setcookie("cart", serialize($cart));
檢查它,然後訪問它:
if (!empty($_COOKIE) && isset($_COOKIE['cart'])) {
$cart = unserialize($_COOKIE['cart']);
echo '<pre>';print_r($cart);echo '</pre>';
}
我只會用這個不重要的數據。
什麼是重要的實際?在這裏,我存儲購物車的價格,數量和產品編號。這怎麼可能如此重要?通過嘗試XSS攻擊可以用這些信息做些什麼? – nick
你是這方面的判斷者 - 使用cookies時提及任何安全風險很重要 – m79lkm
我想說重要數據應該是'需要安全的數據'。 – superUntitled
正如約書亞指出的,餅乾並不是儲存購物車信息的最佳場所。這類信息應該保存在服務器上。根據您的要求,這可能是會話數據或數據庫。在客戶端存儲購物車信息不允許對購物車內容有任何洞察。例如,如果有人將物品留在購物車中,您可以通過發送提醒或將消息添加到店面頁面來吸引他們。
要回答您的問題,Cookie是字符串,因此如果您想將購物車數據結構存儲爲Cookie,則需要對其進行序列化。有關serialize
和json_encode
的技術優點的討論,請參閱this earlier question。
術語「網絡存儲」有點含糊不清。您是指HTML5本地存儲?如果是這樣,那麼這可能不是一個好的選擇,因爲數據不會像使用cookie一樣自動發送到每個請求的服務器上。
找到你的答案@nick? –