豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: PHP源码外卖系统

🤖 Ai回答:
开发一个基于 PHP 的外卖系统是一个完整的 Web 项目,涵盖用户端、商家端和管理后台。以下是一个简化版的 PHP 外卖系统源码结构和核心功能实现,适合学习或二次开发。

🍔 PHP 外卖系统(简化版)

✅ 功能模块
1、用户注册/登录
2、商家列表 & 菜单展示
3、添加菜品到购物车
4、下单与订单管理
5、管理员后台(增删改查商家/菜品)
6、使用 MySQL 存储数据

📁 项目目录结构

/php-food-delivery/

├── config/
│ └── db.php 数据库连接

├── includes/
│ ├── header.php 公共头部
│ ├── footer.php 公共底部
│ └── auth.php 登录验证函数

├── assets/
│ ├── css/style.css
│ └── js/script.js

├── user/
│ ├── login.php
│ ├── register.php
│ ├── index.php 用户首页(浏览商家)
│ ├── menu.php 查看菜单
│ ├── cart.php 购物车
│ ├── order.php 提交订单
│ └── logout.php

├── admin/
│ ├── login.php
│ ├── dashboard.php 后台首页
│ ├── add_restaurant.php
│ ├── add_food.php
│ └── orders.php 查看所有订单

├── images/ 存放图片

└── index.php 入口页面

🔧 数据库设计(MySQL)

sql
创建数据库
CREATE DATABASE food_delivery;
USE food_delivery;

用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role ENUM('user', 'admin') DEFAULT 'user',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

商家表
CREATE TABLE restaurants (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
address TEXT,
phone VARCHAR(15),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

菜品表
CREATE TABLE foods (
id INT AUTO_INCREMENT PRIMARY KEY,
restaurant_id INT,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
image VARCHAR(100),
FOREIGN KEY (restaurant_id) REFERENCES restaurants(id)
);

订单表
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
food_id INT,
quantity INT DEFAULT 1,
total_price DECIMAL(10,2),
status ENUM('pending', 'completed', 'cancelled') DEFAULT 'pending',
order_time DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (food_id) REFERENCES foods(id)
);

🔐 config/db.php

php
<?php
$host = 'localhost';
$dbname = 'food_delivery';
$username = 'root';
$password = '';

try {
$pdo = new PDO(mysql:host=$host;dbname=$dbname, $username, $password);
$pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die(数据库连接失败: 、$e-getMessage());
}
?

🌐 index.php(入口页)

php
<?php include 'includes/header.php'; ?
<h2欢迎来到外卖系统</h2
<p<a href=user/login.php用户登录</a</p
<p<a href=admin/login.php管理员登录</a</p
<?php include 'includes/footer.php'; ?

👤 user/login.php

php
<?php
session_start();
include '../config/db.php';
include '../includes/auth.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];

$stmt = $pdo-prepare(SELECT * FROM users WHERE username = ? AND role = 'user');
$stmt-execute([$username]);
$user = $stmt-fetch();

if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header(Location: index.php);
exit;
} else {
echo 用户名或密码错误!;
}
}
?

<form method=post
<h3用户登录</h3
<input type=text name=username placeholder=用户名 required<br<br
<input type=password name=password placeholder=密码 required<br<br
<button type=submit登录</button
</form
<a href=register.php注册账号</a

🛒 user/cart.php(示例:简单购物车逻辑)

php
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header(Location: login.php);
exit;
}

// 模拟购物车(实际项目建议用 session 数组存储)
$cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : [];

if ($_POST['action'] == 'add') {
$food_id = $_POST['food_id'];
$cart[] = $food_id;
$_SESSION['cart'] = $cart;
}
?

<h2购物车</h2
<ul
<?php foreach ($cart as $food_id): ?
<?php
$stmt = $pdo-prepare(SELECT * FROM foods WHERE id = ?);
$stmt-execute([$food_id]);
$food = $stmt-fetch();
?
<li<?= htmlspecialchars($food['name']) ? ¥<?= $food['price'] ?</li
<?php endforeach; ?
</ul

<a href=index.php继续浏览</a |
<a href=order.php去结算</a

📦 user/order.php(提交订单)

php
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header(Location: login.php);
exit;
}

$cart = $_SESSION['cart'] ?? [];
$total = 0;

foreach ($cart as $food_id) {
$stmt = $pdo-prepare(SELECT price FROM foods WHERE id = ?);
$stmt-execute([$food_id]);
$food = $stmt-fetch();
$total += $food['price'];
}

// 保存订单(简化:只存第一条)
$stmt = $pdo-prepare(INSERT INTO orders (user_id, food_id, quantity, total_price) VALUES (?, ?, ?, ?));
$stmt-execute([$_SESSION['user_id'], $cart[0], count($cart), $total]);

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

echo 下单成功!总金额:¥{$total};
?

🎨 includes/header.php

php
<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8
<title外卖系统</title
<link rel=stylesheet href=assets/css/style.css
</head
<body
<header
<h1🍔 快乐外卖</h1
<nav
<a href=index.php首页</a
<?php if (isset($_SESSION['username'])): ?
<span你好, <?= $_SESSION['username'] ?!</span
<a href=logout.php登出</a
<?php endif; ?
</nav
</header
<hr

💻 admin/dashboard.php(管理员后台)

php
<?php
session_start();
if (!isset($_SESSION['admin'])) {
header(Location: login.php);
exit;
}
?
<h2管理员后台</h2
<ul
<li<a href=add_restaurant.php添加商家</a</li
<li<a href=add_food.php添加菜品</a</li
<li<a href=orders.php查看订单</a</li
</ul
<a href=logout.php登出</a

✅ 如何运行?

1、安装 XAMPP / WAMP / LAMP
2、将项目放入 `htdocs` 目录
3、导入 SQL 到 phpMyAdmin
4、访问 `http://localhost/php-food-delivery/`

🚀 可扩展功能(进阶)

使用 Bootstrap 美化界面
实现完整购物车(Session + JSON)
增加配送地址、支付模拟
AJAX 异步添加菜品
图片上传功能(商家/菜品图)
验证码登录、邮箱注册
Laravel 或 ThinkPHP 框架重构

📦 下载源码(GitHub 示例)

你可以克隆一个开源版本学习:

bash
git clone https://github.com/example/php-food-delivery-system.git

⚠️ 注:目前 GitHub 上有许多开源 PHP 外卖系统,搜索关键词:
`php

Ai作答

📣 商家广告


姓名

广告招商

取名

高防vps

起名


0

IP地址: 146.199.47.151

搜索次数: 2

提问时间: 2025-11-05 22:31:16

🛒 域名购买
ww.fj.cn
27.gs
wc.chat
8.sx.cn
54.gold
7.hk.cn
73.gold
te.biz
4666.com.cn
82.gs

❓️ 热门提问
ps5常用主机设定
机房消音降噪
win11创建ftp服务器
关键词广告关键词广告创意工具
代理工具DNS设置
单域名证书价格
连接mysql服务器
SEO数据面板
怎样搭建vps服务器
bootstrap dns 服务器
豌豆Ai站群搜索引擎系统

🌐 域名评估
yu7.tw.cn
xphone.center
su7.ac.cn
46.gg
mxek.cn
aaaa.jl.cn
sf.xz.cn
an.sc.cn
nn.gs.cn
hswp.cn

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
谷哥seo  广州日美月饼厂  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 65537 65538 65539 下一篇