php用session实现购物车
PHP 使用 Session 实现购物车
初始化 Session 并创建购物车结构
确保在脚本开头调用 session_start() 以启用 Session 功能。购物车数据通常存储在 $_SESSION 数组中,建议使用多维数组存储商品信息。
session_start();
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
添加商品到购物车
通过商品 ID 作为键,存储商品数量、名称、价格等属性。添加时需检查商品是否已存在,若存在则更新数量。
function addToCart($productId, $name, $price, $quantity = 1) {
if (isset($_SESSION['cart'][$productId])) {
$_SESSION['cart'][$productId]['quantity'] += $quantity;
} else {
$_SESSION['cart'][$productId] = [
'name' => $name,
'price' => $price,
'quantity' => $quantity
];
}
}
从购物车移除商品
通过 unset() 直接删除指定商品 ID 的数组元素。
function removeFromCart($productId) {
if (isset($_SESSION['cart'][$productId])) {
unset($_SESSION['cart'][$productId]);
}
}
更新商品数量
直接修改对应商品的 quantity 字段,需验证数值有效性(如非负数)。
function updateQuantity($productId, $newQuantity) {
if (isset($_SESSION['cart'][$productId]) && $newQuantity > 0) {
$_SESSION['cart'][$productId]['quantity'] = $newQuantity;
}
}
计算购物车总价
遍历购物车数组,累加各商品的价格与数量的乘积。
function calculateTotal() {
$total = 0;
foreach ($_SESSION['cart'] as $item) {
$total += $item['price'] * $item['quantity'];
}
return $total;
}
显示购物车内容
通过循环输出商品列表,可结合 HTML 表格增强可读性。
function displayCart() {
if (empty($_SESSION['cart'])) {
echo "购物车为空";
return;
}
echo "<table border='1'>";
echo "<tr><th>商品名称</th><th>单价</th><th>数量</th><th>小计</th></tr>";
foreach ($_SESSION['cart'] as $id => $item) {
$subtotal = $item['price'] * $item['quantity'];
echo "<tr>
<td>{$item['name']}</td>
<td>{$item['price']}</td>
<td>{$item['quantity']}</td>
<td>$subtotal</td>
</tr>";
}
echo "</table>";
echo "总价: " . calculateTotal();
}
清空购物车
重置 $_SESSION['cart'] 为空数组即可。
function clearCart() {
$_SESSION['cart'] = [];
}
注意事项
- Session 安全性:确保对用户输入进行过滤,防止 Session 劫持。
- 数据持久性:Session 数据默认在浏览器关闭后失效,如需长期存储需结合数据库。
- 性能优化:大量商品时建议分页显示,避免一次性加载所有数据。
完整示例可通过表单提交商品信息调用上述函数,具体实现需根据实际业务逻辑调整。







