当前位置:首页 > PHP

php 实现购物车

2026-01-13 13:34:26PHP

PHP 实现购物车功能

购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式:

php 实现购物车

使用 Session 存储购物车数据

Session 是一种简单的临时存储方式,适合小型网站或不需要持久化购物车数据的场景。

php 实现购物车

// 启动 Session
session_start();

// 添加商品到购物车
if (isset($_POST['add_to_cart'])) {
    $product_id = $_POST['product_id'];
    $quantity = $_POST['quantity'];

    // 初始化购物车
    if (!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = array();
    }

    // 检查商品是否已存在
    if (isset($_SESSION['cart'][$product_id])) {
        $_SESSION['cart'][$product_id] += $quantity;
    } else {
        $_SESSION['cart'][$product_id] = $quantity;
    }
}

// 从购物车移除商品
if (isset($_GET['remove'])) {
    $product_id = $_GET['remove'];
    unset($_SESSION['cart'][$product_id]);
}

// 更新购物车数量
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]);
        }
    }
}

使用数据库存储购物车数据

对于需要持久化或用户登录后才能使用的购物车,可以将数据存储在数据库中。

// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=shop', 'username', 'password');

// 添加商品到购物车
if (isset($_POST['add_to_cart'])) {
    $user_id = $_SESSION['user_id'];
    $product_id = $_POST['product_id'];
    $quantity = $_POST['quantity'];

    // 检查是否已存在
    $stmt = $db->prepare("SELECT * FROM cart WHERE user_id = ? AND product_id = ?");
    $stmt->execute([$user_id, $product_id]);
    $item = $stmt->fetch();

    if ($item) {
        // 更新数量
        $new_quantity = $item['quantity'] + $quantity;
        $stmt = $db->prepare("UPDATE cart SET quantity = ? WHERE id = ?");
        $stmt->execute([$new_quantity, $item['id']]);
    } else {
        // 新增记录
        $stmt = $db->prepare("INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)");
        $stmt->execute([$user_id, $product_id, $quantity]);
    }
}

// 获取购物车内容
function getCartItems($user_id) {
    global $db;
    $stmt = $db->prepare("
        SELECT p.*, c.quantity 
        FROM cart c 
        JOIN products p ON c.product_id = p.id 
        WHERE c.user_id = ?
    ");
    $stmt->execute([$user_id]);
    return $stmt->fetchAll();
}

购物车页面显示

// 显示购物车内容
$cart_items = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();

foreach ($cart_items as $product_id => $quantity) {
    // 获取商品信息
    $product = getProductById($product_id);

    echo '<div class="cart-item">';
    echo '<h4>' . $product['name'] . '</h4>';
    echo '<p>价格: $' . $product['price'] . '</p>';
    echo '<form method="post">';
    echo '<input type="number" name="quantity['.$product_id.']" value="'.$quantity.'">';
    echo '<button type="submit" name="update_cart">更新</button>';
    echo '<a href="?remove='.$product_id.'">移除</a>';
    echo '</form>';
    echo '</div>';
}

// 计算总价
function calculateTotal($cart_items) {
    $total = 0;
    foreach ($cart_items as $product_id => $quantity) {
        $product = getProductById($product_id);
        $total += $product['price'] * $quantity;
    }
    return $total;
}

数据库表结构

如果使用数据库存储购物车数据,需要创建以下表:

CREATE TABLE cart (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
);

安全注意事项

  1. 对用户输入进行验证和过滤
  2. 使用预处理语句防止SQL注入
  3. 对敏感操作进行CSRF保护
  4. 对数量进行限制防止负数或过大值

以上代码提供了购物车的基本功能实现,可以根据实际需求进行扩展和优化。

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

相关文章

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…

php 路由实现的

php 路由实现的

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