当前位置:首页 > PHP

用session实现购物车 php

2026-02-13 18:29:51PHP

使用 PHP Session 实现购物车功能

初始化 Session 和购物车结构

确保在脚本顶部调用 session_start() 函数以启用 Session 功能。购物车数据结构通常使用关联数组存储商品信息。

<?php
session_start();

if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = [];
}
?>

添加商品到购物车

通过商品 ID 作为键值,存储商品数量和详细信息。支持重复添加时数量累加。

function addToCart($productId, $quantity, $productDetails) {
    if (isset($_SESSION['cart'][$productId])) {
        $_SESSION['cart'][$productId]['quantity'] += $quantity;
    } else {
        $_SESSION['cart'][$productId] = [
            'quantity' => $quantity,
            'details' => $productDetails
        ];
    }
}

// 示例调用
addToCart(101, 2, ['name' => 'T-Shirt', 'price' => 19.99]);

从购物车移除商品

通过 unset() 函数直接删除指定商品 ID 的数组元素。

function removeFromCart($productId) {
    if (isset($_SESSION['cart'][$productId])) {
        unset($_SESSION['cart'][$productId]);
    }
}

更新商品数量

直接修改指定商品 ID 的数量值,可增加验证防止非数字输入。

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['details']['price'] * $item['quantity'];
    }
    return number_format($total, 2);
}

清空购物车

重置 Session 中的购物车数组为空。

function clearCart() {
    $_SESSION['cart'] = [];
}

显示购物车内容

通过循环输出商品列表,可结合 HTML 表格展示。

function displayCart() {
    if (empty($_SESSION['cart'])) {
        echo "购物车为空";
        return;
    }

    echo "<table border='1'><tr><th>商品</th><th>单价</th><th>数量</th><th>小计</th></tr>";
    foreach ($_SESSION['cart'] as $id => $item) {
        $subtotal = $item['details']['price'] * $item['quantity'];
        echo "<tr>
            <td>{$item['details']['name']}</td>
            <td>\${$item['details']['price']}</td>
            <td>{$item['quantity']}</td>
            <td>\$" . number_format($subtotal, 2) . "</td>
        </tr>";
    }
    echo "</table>";
    echo "<p>总计: \$" . calculateTotal() . "</p>";
}

安全注意事项

  1. 对用户输入进行过滤验证,防止 Session 固定攻击
  2. 重要操作如结算时应验证用户登录状态
  3. 敏感数据如价格应存储在服务端,避免前端篡改
// 示例:验证商品ID为整数
$productId = filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT);
if ($productId === false) {
    die("Invalid product ID");
}

完整流程示例

典型购物车操作流程包含添加、更新、删除和显示功能,通过表单或 AJAX 与后端交互。

用session实现购物车 php

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['add_item'])) {
        addToCart($_POST['product_id'], $_POST['quantity'], [
            'name' => $_POST['product_name'],
            'price' => $_POST['product_price']
        ]);
    }
    elseif (isset($_POST['remove_item'])) {
        removeFromCart($_POST['product_id']);
    }
    elseif (isset($_POST['update_quantity'])) {
        updateQuantity($_POST['product_id'], $_POST['new_quantity']);
    }
    elseif (isset($_POST['clear_cart'])) {
        clearCart();
    }
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
}

分享给朋友:

相关文章

php实现简单购物车

php实现简单购物车

PHP实现简单购物车 购物车功能是电商网站的核心部分,以下是一个基于PHP和Session的简单购物车实现方案: 初始化购物车 在PHP脚本开始处初始化购物车Session: session_st…

php购物车怎么实现

php购物车怎么实现

实现PHP购物车的基本步骤 购物车功能通常包括添加商品、删除商品、更新数量、计算总价等核心功能。以下是一个基于Session的PHP购物车实现方案。 初始化购物车Session 在PHP脚本开头初始…

react如何检测session

react如何检测session

React 检测 Session 的方法 在 React 中检测用户会话(session)通常需要结合后端服务或浏览器存储机制。以下是几种常见方法: 使用 Cookies 或 LocalStorag…

php购物车实现流程

php购物车实现流程

PHP 购物车实现流程 数据库设计 创建必要的数据库表,通常包括products(商品表)、users(用户表)和cart(购物车表)。商品表存储商品信息,用户表存储用户信息,购物车表关联用户和商品。…

php用session实现购物车

php用session实现购物车

PHP 使用 Session 实现购物车 初始化 Session 确保在脚本的最开始调用 session_start() 函数,以便使用 Session 功能。该函数必须在任何输出之前调用。 ses…