php 实现购物
购物车功能实现
在PHP中实现购物车功能通常涉及会话管理、数据库操作和用户交互。以下是实现购物车功能的核心步骤。
初始化会话和数据库连接
使用PHP的session_start()函数初始化会话,确保购物车数据在用户访问期间持久化。数据库连接可以通过PDO或MySQLi实现。

session_start();
$db = new PDO('mysql:host=localhost;dbname=shop', 'username', 'password');
添加商品到购物车
通过表单或URL参数接收商品ID和数量,将商品信息存储到$_SESSION['cart']数组中。若商品已存在,更新数量;否则新增条目。
if (isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
if (isset($_SESSION['cart'][$product_id])) {
$_SESSION['cart'][$product_id] += $quantity;
} else {
$_SESSION['cart'][$product_id] = $quantity;
}
}
显示购物车内容
遍历$_SESSION['cart']数组,查询数据库获取商品详细信息(如名称、价格),并计算总价。

if (!empty($_SESSION['cart'])) {
$total = 0;
foreach ($_SESSION['cart'] as $product_id => $quantity) {
$stmt = $db->prepare("SELECT name, price FROM products WHERE id = ?");
$stmt->execute([$product_id]);
$product = $stmt->fetch();
$subtotal = $product['price'] * $quantity;
$total += $subtotal;
echo "{$product['name']} x $quantity: $subtotal<br>";
}
echo "Total: $total";
}
更新或删除购物车商品
提供表单允许用户修改商品数量或移除商品。更新$_SESSION['cart']或使用unset()删除指定商品。
if (isset($_POST['update_cart'])) {
foreach ($_POST['quantity'] as $product_id => $quantity) {
if ($quantity > 0) {
$_SESSION['cart'][$product_id] = $quantity;
} else {
unset($_SESSION['cart'][$product_id]);
}
}
}
结账与清空购物车
结账时可将购物车数据写入订单表,完成后清空会话中的购物车。
if (isset($_POST['checkout'])) {
$stmt = $db->prepare("INSERT INTO orders (user_id, total) VALUES (?, ?)");
$stmt->execute([$_SESSION['user_id'], $total]);
unset($_SESSION['cart']);
}
安全性注意事项
- 验证用户输入,防止SQL注入(使用预处理语句)。
- 对商品ID和数量进行类型检查。
- 考虑使用CSRF令牌保护表单提交。
以上步骤提供了一个基础的PHP购物车实现框架,可根据实际需求扩展功能,如折扣、运费计算等。






