php session 实现购物车
PHP Session 实现购物车的方法
初始化 Session
在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。
session_start();
创建购物车数据结构
购物车可以设计为一个关联数组,存储商品 ID、名称、价格和数量等信息。如果购物车不存在于 Session 中,则初始化一个空数组。
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
添加商品到购物车
通过表单或 AJAX 提交商品信息,将商品添加到 Session 中的购物车数组。如果商品已存在,则更新数量;否则新增一条记录。
$productId = $_POST['product_id'];
$productName = $_POST['product_name'];
$productPrice = $_POST['product_price'];
$quantity = $_POST['quantity'];
if (isset($_SESSION['cart'][$productId])) {
$_SESSION['cart'][$productId]['quantity'] += $quantity;
} else {
$_SESSION['cart'][$productId] = [
'name' => $productName,
'price' => $productPrice,
'quantity' => $quantity
];
}
更新购物车商品数量
允许用户修改购物车中商品的数量,通过表单提交更新后的值。
$productId = $_POST['product_id'];
$newQuantity = $_POST['quantity'];
if (isset($_SESSION['cart'][$productId])) {
$_SESSION['cart'][$productId]['quantity'] = $newQuantity;
}
移除购物车中的商品
提供移除商品的选项,从购物车数组中删除对应的商品记录。
$productId = $_POST['product_id'];
if (isset($_SESSION['cart'][$productId])) {
unset($_SESSION['cart'][$productId]);
}
计算购物车总价
遍历购物车数组,计算所有商品的总价。
$totalPrice = 0;
foreach ($_SESSION['cart'] as $item) {
$totalPrice += $item['price'] * $item['quantity'];
}
显示购物车内容
在页面上展示购物车中的商品列表及总价。
if (!empty($_SESSION['cart'])) {
foreach ($_SESSION['cart'] as $productId => $item) {
echo "商品名称: " . $item['name'] . "<br>";
echo "单价: " . $item['price'] . "<br>";
echo "数量: " . $item['quantity'] . "<br>";
echo "小计: " . ($item['price'] * $item['quantity']) . "<br>";
echo "<form method='post' action='remove_item.php'>";
echo "<input type='hidden' name='product_id' value='$productId'>";
echo "<button type='submit'>移除</button>";
echo "</form>";
echo "<hr>";
}
echo "总价: " . $totalPrice;
} else {
echo "购物车为空";
}
清空购物车
提供清空购物车的功能,移除 Session 中的购物车数据。
unset($_SESSION['cart']);
注意事项
- 确保在操作 Session 数据之前调用
session_start()。 - 对用户输入进行验证和过滤,防止安全漏洞。
- 考虑使用数据库持久化购物车数据,以便用户下次登录时可以恢复购物车内容。






