当前位置:首页 > PHP

php实现购买操作

2026-02-15 20:42:23PHP

PHP 实现购买操作

数据库设计

创建必要的数据库表存储商品、订单和用户信息。例如:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10,2),
    stock INT
);

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    total DECIMAL(10,2),
    status VARCHAR(20),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE order_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT,
    product_id INT,
    quantity INT,
    price DECIMAL(10,2)
);

商品展示页面

从数据库获取商品信息并展示给用户:

$conn = new mysqli("localhost", "username", "password", "database");
$result = $conn->query("SELECT * FROM products WHERE stock > 0");
while($row = $result->fetch_assoc()) {
    echo "<div class='product'>";
    echo "<h3>".$row['name']."</h3>";
    echo "<p>价格: ".$row['price']."</p>";
    echo "<form method='post' action='add_to_cart.php'>";
    echo "<input type='hidden' name='product_id' value='".$row['id']."'>";
    echo "<input type='number' name='quantity' min='1' max='".$row['stock']."'>";
    echo "<button type='submit'>加入购物车</button>";
    echo "</form>";
    echo "</div>";
}

购物车功能

实现购物车添加和显示功能:

// add_to_cart.php
session_start();
$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;
}

header("Location: cart.php");

// cart.php
session_start();
$total = 0;
foreach($_SESSION['cart'] as $product_id => $quantity) {
    $product = getProductById($product_id); // 自定义函数获取商品详情
    $subtotal = $product['price'] * $quantity;
    $total += $subtotal;
    // 显示购物车商品
}
echo "总价: ".$total;
echo "<form method='post' action='checkout.php'>";
echo "<button type='submit'>结算</button>";
echo "</form>";

结算处理

处理订单创建和库存更新:

// checkout.php
session_start();
$conn = new mysqli("localhost", "username", "password", "database");

// 开始事务
$conn->begin_transaction();

try {
    // 创建订单
    $total = calculateTotal($_SESSION['cart']); // 自定义计算总价函数
    $user_id = $_SESSION['user_id']; // 假设用户已登录
    $conn->query("INSERT INTO orders (user_id, total, status) VALUES ($user_id, $total, 'pending')");
    $order_id = $conn->insert_id;

    // 添加订单项
    foreach($_SESSION['cart'] as $product_id => $quantity) {
        $product = getProductById($product_id);
        $price = $product['price'];
        $conn->query("INSERT INTO order_items (order_id, product_id, quantity, price) VALUES ($order_id, $product_id, $quantity, $price)");

        // 更新库存
        $conn->query("UPDATE products SET stock = stock - $quantity WHERE id = $product_id");
    }

    // 清空购物车
    unset($_SESSION['cart']);

    $conn->commit();
    header("Location: order_success.php?order_id=$order_id");
} catch(Exception $e) {
    $conn->rollback();
    header("Location: checkout_error.php");
}

支付集成

集成第三方支付网关(以支付宝为例):

// 配置支付宝参数
$alipay_config = array(
    'partner' => '2088xxxxxxxxxx',
    'key' => 'xxxxxxxxxxxxxxxx',
    'seller_email' => 'your@email.com',
    'notify_url' => 'http://yourdomain.com/notify_url.php',
    'return_url' => 'http://yourdomain.com/return_url.php'
);

// 构造请求参数
$parameter = array(
    "service" => "create_direct_pay_by_user",
    "partner" => $alipay_config['partner'],
    "payment_type" => "1",
    "notify_url" => $alipay_config['notify_url'],
    "return_url" => $alipay_config['return_url'],
    "out_trade_no" => $order_id,
    "subject" => "订单支付",
    "total_fee" => $total,
    "seller_email" => $alipay_config['seller_email']
);

// 生成支付表单
function buildRequestForm($para, $alipay_config) {
    $sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='https://mapi.alipay.com/gateway.do?_input_charset=utf-8' method='post'>";
    while (list ($key, $val) = each ($para)) {
        $sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
    }
    $sHtml.= "<input type='submit' value='确认支付'></form>";
    return $sHtml;
}

echo buildRequestForm($parameter, $alipay_config);

订单状态更新

处理支付回调更新订单状态:

// notify_url.php
$verify_result = verifyNotify(); // 自定义验证函数

if($verify_result) {
    $order_id = $_POST['out_trade_no'];
    $trade_status = $_POST['trade_status'];

    if($trade_status == 'TRADE_FINISHED' || $trade_status == 'TRADE_SUCCESS') {
        $conn->query("UPDATE orders SET status = 'paid' WHERE id = $order_id");
    }
    echo "success";
} else {
    echo "fail";
}

安全考虑

实现必要的安全措施:

php实现购买操作

  • 使用预处理语句防止SQL注入
  • 验证用户输入
  • 实现CSRF防护
  • 对敏感数据进行加密
  • 使用HTTPS传输数据

以上实现涵盖了从商品展示到支付完成的完整购买流程,可根据实际需求进行调整和扩展。

标签: 操作php
分享给朋友:

相关文章

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…