php session实现购物车
使用PHP Session实现购物车
购物车功能是电商网站的核心部分,通过PHP的Session机制可以轻松实现。以下是具体实现方法:
初始化Session
在脚本开始处启动Session:
session_start();
创建购物车结构
购物车通常设计为关联数组,存储商品ID、数量等信息:

if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
}
添加商品到购物车
处理表单提交,将商品加入购物车:
$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;
}
更新购物车数量
提供修改商品数量的功能:

foreach ($_POST['quantity'] as $product_id => $quantity) {
if ($quantity <= 0) {
unset($_SESSION['cart'][$product_id]);
} else {
$_SESSION['cart'][$product_id] = $quantity;
}
}
从购物车移除商品
删除指定商品:
$product_id = $_GET['remove_id'];
if (isset($_SESSION['cart'][$product_id])) {
unset($_SESSION['cart'][$product_id]);
}
清空购物车
一次性清空所有商品:
unset($_SESSION['cart']);
显示购物车内容
遍历购物车显示商品信息:
if (!empty($_SESSION['cart'])) {
foreach ($_SESSION['cart'] as $product_id => $quantity) {
// 这里应该查询数据库获取商品详细信息
echo "商品ID: $product_id, 数量: $quantity";
}
} else {
echo "购物车为空";
}
安全注意事项
- 始终对用户输入进行验证和过滤
- 考虑使用
session_regenerate_id()防止会话固定攻击 - 重要数据应存储在数据库中,Session仅作为临时存储
完整示例代码
<?php
session_start();
// 添加商品
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_to_cart'])) {
$product_id = filter_input(INPUT_POST, 'product_id', FILTER_SANITIZE_NUMBER_INT);
$quantity = filter_input(INPUT_POST, 'quantity', FILTER_SANITIZE_NUMBER_INT);
if ($product_id && $quantity > 0) {
if (isset($_SESSION['cart'][$product_id])) {
$_SESSION['cart'][$product_id] += $quantity;
} else {
$_SESSION['cart'][$product_id] = $quantity;
}
}
}
// 删除商品
if (isset($_GET['remove_id'])) {
$remove_id = filter_input(INPUT_GET, 'remove_id', FILTER_SANITIZE_NUMBER_INT);
if ($remove_id && isset($_SESSION['cart'][$remove_id])) {
unset($_SESSION['cart'][$remove_id]);
}
}
?>
这种实现方式简单直接,适合小型电商网站。对于更复杂的场景,建议考虑使用数据库持久化存储购物车数据。






