当前位置:首页 > PHP

php session 实现购物车

2026-04-02 22:38:20PHP

PHP Session 实现购物车的方法

使用 PHP 的 $_SESSION 超全局变量可以轻松实现购物车功能。以下是一个完整的实现方案:

初始化 Session 和购物车结构

在脚本的最开始处调用 session_start(),确保 Session 可用。购物车可以设计为关联数组,存储商品 ID、名称、价格和数量。

session_start();

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

添加商品到购物车

创建一个处理表单提交的代码块,将商品添加到购物车数组中。需要检查商品是否已存在,若存在则增加数量。

if (isset($_POST['add_to_cart'])) {
    $product_id = $_POST['product_id'];
    $product_name = $_POST['product_name'];
    $product_price = $_POST['product_price'];

    if (isset($_SESSION['cart'][$product_id])) {
        $_SESSION['cart'][$product_id]['quantity'] += 1;
    } else {
        $_SESSION['cart'][$product_id] = [
            'name' => $product_name,
            'price' => $product_price,
            'quantity' => 1
        ];
    }
}

从购物车移除商品

提供从购物车中移除商品或减少数量的功能。当数量减至 0 时完全移除该商品项。

if (isset($_GET['remove_from_cart'])) {
    $product_id = $_GET['remove_from_cart'];

    if (isset($_SESSION['cart'][$product_id])) {
        unset($_SESSION['cart'][$product_id]);
    }
}

if (isset($_GET['decrease_quantity'])) {
    $product_id = $_GET['decrease_quantity'];

    if (isset($_SESSION['cart'][$product_id])) {
        $_SESSION['cart'][$product_id]['quantity'] -= 1;

        if ($_SESSION['cart'][$product_id]['quantity'] <= 0) {
            unset($_SESSION['cart'][$product_id]);
        }
    }
}

显示购物车内容

遍历 $_SESSION['cart'] 数组显示所有商品,并计算总价。可以使用 HTML 表格来格式化输出。

$total = 0;

if (!empty($_SESSION['cart'])) {
    echo '<table>';
    echo '<tr><th>商品名称</th><th>单价</th><th>数量</th><th>小计</th><th>操作</th></tr>';

    foreach ($_SESSION['cart'] as $id => $item) {
        $subtotal = $item['price'] * $item['quantity'];
        $total += $subtotal;

        echo '<tr>';
        echo '<td>'.$item['name'].'</td>';
        echo '<td>'.$item['price'].'</td>';
        echo '<td>'.$item['quantity'].'</td>';
        echo '<td>'.$subtotal.'</td>';
        echo '<td><a href="?decrease_quantity='.$id.'">-</a> | <a href="?remove_from_cart='.$id.'">移除</a></td>';
        echo '</tr>';
    }

    echo '<tr><td colspan="3">总计</td><td>'.$total.'</td><td></td></tr>';
    echo '</table>';
} else {
    echo '购物车是空的';
}

清空购物车

提供一个清空整个购物车的功能,只需重置 $_SESSION['cart'] 数组。

if (isset($_GET['empty_cart'])) {
    $_SESSION['cart'] = [];
    header('Location: cart.php'); // 重定向避免重复提交
    exit;
}

安全注意事项

始终验证和清理用户输入,防止 XSS 攻击。在显示用户提供的数据时使用 htmlspecialchars() 函数。

php session 实现购物车

$product_name = htmlspecialchars($_POST['product_name']);

这个实现提供了购物车的基本功能,可以根据需求进一步扩展,如添加商品图片、持久化存储到数据库等。

标签: 购物车php
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUES…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php 路由实现的

php 路由实现的

PHP 路由实现方法 基于原生 PHP 实现路由 创建一个简单的路由解析器,通过解析 URL 路径来调用对应的控制器或函数。 // 定义路由表 $routes = [ '/' => '…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…