当前位置:首页 > 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 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php购物车实现原理

php购物车实现原理

PHP 购物车实现原理 购物车是电子商务网站的核心功能之一,PHP 实现购物车功能主要依赖会话(Session)或数据库存储用户选择的商品信息。以下是常见的实现方式和技术要点: 基于 Session…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php 实现https

php 实现https

在 PHP 中实现 HTTPS 确保 PHP 应用通过 HTTPS 协议安全传输数据,可以通过以下几种方式实现: 配置服务器强制 HTTPS 在 Web 服务器(如 Apache 或 Nginx)中…