鍍金池/ 問答/PHP  HTML/ php 如何用SESSION 記憶購物車資訊?

php 如何用SESSION 記憶購物車資訊?

我要將商品加入購物車
我想先丟到SESSION去記憶
只是我不懂原理是什麼?
有大神可以幫我解析嗎??
會有商品名稱 圖片 單價 數(shù)量 小計
甚至可以移除該商品
丟到SESSION去記憶要怎麼實現(xiàn)?
以往我 SESSION 都是單一值
例如 $_SESSION['abc'] = 'abc';
可以保存多個?且每個都有 key, value

我原本是想說丟到數(shù)據(jù)庫記憶
但這方法對嗎?

回答
編輯回答
臭榴蓮

session可以存數(shù)組的,沒登錄你就先給他扔session里面,離開頁面就消失了;如果登錄了你就把他同步到登錄的這個人的信息里面

2017年7月16日 17:55
編輯回答
失心人

你的做法和想法都是正確的,但具體實現(xiàn)要看業(yè)務場景。正常情況下

用戶登錄狀態(tài)下加入購物車應當記錄同步其他端(存入數(shù)據(jù)庫)
如用戶未登錄則存在session中
如用戶未登錄添加的購物車,在用戶登錄后自動記錄到數(shù)據(jù)庫中

關(guān)于電商的設計可以看看我的文章
https://segmentfault.com/a/11...

2017年8月21日 06:11
編輯回答
萌小萌

簡單點來說,操作SESSION可以視為操作數(shù)組一樣;
樓主說session保存購物車信息如何操作,demo如下:

// 假如SESSION里的購物車商品保存的是這種數(shù)據(jù)形式
$_SESSION['cart']['goods'] = [
    'goods_id' => [
        'goods_name' => 'goods_name',
        'price'      => 'price',
        'spec'       => 'spec',
        'num'        => 'num'
    ],
    '1' => [
        'goods_name' => '橙子',
        'price'      => '15.00',
        'spec'       => '臍橙;',
        'num'        => '10'
    ],
    '2' => [
        'goods_name' => '蘋果',
        'price'      => '10.00',
        'spec'       => '紅蘋果;',
        'num'        => '5'
    ]
];

/**
 * 存儲商品信息到購物車
 * 1、先取出SESSION購物車里的商品數(shù)據(jù)
 * 2、生成新的商品數(shù)據(jù)
 * 3、保存到SESSION
 */
$session_goods = $_SESSION['cart']['goods'];

$session_goods[11] = [
    'goods_name' => 'T恤',
    'price'      => '69.00',
    'spec'       => '顏色:紅色;品牌:以純;',
    'num'        => '1'
];

$_SESSION['cart']['goods'] = $session_goods;


/**
 * 購物車里商品ID為1的商品需要刪除
 * 并更新保存到SESSION
 */
unset($goods['1']);
$_SESSION['cart']['goods'] = $goods;
2018年9月4日 22:17
編輯回答
乖乖瀦

購物車一般存在緩存中

2018年3月9日 18:29
編輯回答
憶往昔
$_SESSION全局變量中可以存儲數(shù)組
session_start();

$_SESSION['goods'] = [
    'name' => 'goodsname',
    'pic' => 'url',
    'price' => 10.10,
    'num' => 100,
    'summary' => 999.50
];
print_r($_SESSION['goods']);

這樣存儲的數(shù)據(jù)在用戶關(guān)閉瀏覽器后就消失了,新開瀏覽器窗口將創(chuàng)建新的會話,之前的會話會在過期時自動銷毀
2017年4月16日 03:03