php 实现购物车
PHP 实现购物车功能
购物车功能是电商网站的核心部分,通常包括添加商品、删除商品、更新数量、计算总价等操作。以下是基于PHP和Session实现的购物车功能示例:
初始化购物车Session
在PHP脚本开始处初始化购物车Session变量:
session_start();
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
}
添加商品到购物车
处理表单提交,将商品添加到购物车:

if (isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$product_name = $_POST['product_name'];
$price = $_POST['price'];
$quantity = $_POST['quantity'] ?? 1;
// 检查商品是否已在购物车
if (isset($_SESSION['cart'][$product_id])) {
$_SESSION['cart'][$product_id]['quantity'] += $quantity;
} else {
$_SESSION['cart'][$product_id] = array(
'name' => $product_name,
'price' => $price,
'quantity' => $quantity
);
}
}
从购物车移除商品
处理移除商品的请求:
if (isset($_GET['remove_item'])) {
$product_id = $_GET['remove_item'];
if (isset($_SESSION['cart'][$product_id])) {
unset($_SESSION['cart'][$product_id]);
}
}
更新购物车商品数量
处理更新商品数量的请求:

if (isset($_POST['update_cart'])) {
foreach ($_POST['quantity'] as $product_id => $quantity) {
if ($quantity <= 0) {
unset($_SESSION['cart'][$product_id]);
} else {
$_SESSION['cart'][$product_id]['quantity'] = $quantity;
}
}
}
计算购物车总价
计算购物车中所有商品的总价:
function calculateTotal() {
$total = 0;
if (isset($_SESSION['cart'])) {
foreach ($_SESSION['cart'] as $item) {
$total += $item['price'] * $item['quantity'];
}
}
return $total;
}
显示购物车内容
生成购物车HTML界面:
if (!empty($_SESSION['cart'])) {
echo '<form method="post" action="cart.php">';
echo '<table>';
echo '<tr><th>商品名称</th><th>单价</th><th>数量</th><th>小计</th><th>操作</th></tr>';
foreach ($_SESSION['cart'] as $product_id => $item) {
echo '<tr>';
echo '<td>'.$item['name'].'</td>';
echo '<td>'.$item['price'].'</td>';
echo '<td><input type="number" name="quantity['.$product_id.']" value="'.$item['quantity'].'" min="1"></td>';
echo '<td>'.($item['price'] * $item['quantity']).'</td>';
echo '<td><a href="cart.php?remove_item='.$product_id.'">移除</a></td>';
echo '</tr>';
}
echo '<tr><td colspan="5">总计: '.calculateTotal().'</td></tr>';
echo '</table>';
echo '<button type="submit" name="update_cart">更新购物车</button>';
echo '</form>';
} else {
echo '购物车为空';
}
数据库集成方案
如果需要从数据库获取商品信息,可以这样修改添加商品逻辑:
if (isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'] ?? 1;
// 从数据库获取商品信息
$query = "SELECT name, price FROM products WHERE id = ?";
$stmt = $pdo->prepare($query);
$stmt->execute([$product_id]);
$product = $stmt->fetch();
if ($product) {
// 添加商品到购物车逻辑...
}
}
安全注意事项
- 始终验证用户输入,确保商品ID和数量是有效数字
- 对输出数据进行HTML转义,防止XSS攻击
- 考虑实现CSRF保护机制
- 对于敏感操作如结账,确保用户已登录
扩展功能建议
- 添加商品图片显示
- 实现优惠券和折扣计算
- 添加商品库存检查
- 实现持久化购物车(数据库存储)
- 添加多种货币支持
以上代码提供了购物车的基本功能实现,可以根据实际需求进行扩展和优化。






