PHP实现商城代码
PHP商城系统核心功能实现
用户认证与权限管理
使用PHP的session或JWT实现用户登录注册功能。密码需通过password_hash()加密存储。管理员与普通用户角色分离,通过中间件控制访问权限。
// 用户登录验证示例
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// 数据库查询
$user = $db->query("SELECT * FROM users WHERE username = ?", [$username])->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['role'] = $user['role'];
}
}
商品管理模块实现
数据库设计包含products表(id,name,price,stock,description,image等字段)。后台实现CRUD操作,前端展示商品列表与详情页。
// 商品添加示例
if ($_SESSION['role'] == 'admin') {
$imagePath = uploadImage($_FILES['product_image']);
$db->query(
"INSERT INTO products (name, price, stock, description, image) VALUES (?, ?, ?, ?, ?)",
[$_POST['name'], $_POST['price'], $_POST['stock'], $_POST['description'], $imagePath]
);
}
购物车与订单系统
使用session存储临时购物车数据,结账时生成订单记录。数据库需包含orders和order_items表。
// 购物车添加商品
$_SESSION['cart'][$productId] = [
'quantity' => ($_SESSION['cart'][$productId]['quantity'] ?? 0) + 1,
'price' => $productPrice
];
// 生成订单
$db->beginTransaction();
try {
$orderId = $db->insert("INSERT INTO orders (user_id, total) VALUES (?, ?)", [$userId, $total]);
foreach ($cartItems as $item) {
$db->insert("INSERT INTO order_items (order_id, product_id, quantity, price) VALUES (?, ?, ?, ?)",
[$orderId, $item['id'], $item['quantity'], $item['price']]);
}
$db->commit();
} catch (Exception $e) {
$db->rollBack();
}
支付系统集成
集成第三方支付API如支付宝、微信支付或Stripe。需实现支付回调验证和订单状态更新。
// Stripe支付示例
\Stripe\Stripe::setApiKey('sk_test_xxx');
$charge = \Stripe\Charge::create([
'amount' => $total * 100,
'currency' => 'usd',
'source' => $_POST['stripeToken'],
'description' => 'Order #' . $orderId
]);
if ($charge->paid) {
$db->query("UPDATE orders SET status = 'paid' WHERE id = ?", [$orderId]);
}
安全防护措施
所有用户输入需过滤,SQL查询使用预处理语句。敏感操作需CSRF令牌验证,文件上传需检查MIME类型。
// 输入过滤示例
$cleanInput = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
// 文件上传验证
$allowedTypes = ['image/jpeg', 'image/png'];
if (in_array($_FILES['file']['type'], $allowedTypes)) {
move_uploaded_file($_FILES['file']['tmp_name'], $targetPath);
}
性能优化建议
使用OPcache加速PHP执行,数据库查询添加索引,商品列表实现分页。静态资源通过CDN加速。
// 分页查询示例
$page = $_GET['page'] ?? 1;
$limit = 10;
$offset = ($page - 1) * $limit;
$products = $db->query("SELECT * FROM products LIMIT ? OFFSET ?", [$limit, $offset])->fetchAll();
完整商城系统还需考虑物流对接、评价系统、优惠券模块等扩展功能。建议使用框架如Laravel或CodeIgniter加速开发。







