This commit is contained in:
2026-06-24 17:45:24 +08:00
commit bc0223bf07
16 changed files with 1553 additions and 0 deletions
+231
View File
@@ -0,0 +1,231 @@
# 软件发布平台完善计划
## 项目目标
将现有的简单下载页面升级为功能完整的软件发布平台,包含后端管理、版本管理和配置系统。
## 技术方案
### 数据库选择
- 使用 **SQLite** 作为文件数据库(轻量、无需额外配置)
- 数据库文件路径:`data/database.db`
### 数据库设计
**apps 表** - 存储应用版本信息
```sql
CREATE TABLE apps (
id INTEGER PRIMARY KEY AUTOINCREMENT,
filename TEXT NOT NULL,
original_name TEXT NOT NULL,
version TEXT,
description TEXT,
upload_time DATETIME DEFAULT CURRENT_TIMESTAMP,
file_size INTEGER
);
```
**config 表** - 存储网站配置
```sql
CREATE TABLE config (
key TEXT PRIMARY KEY,
value TEXT
);
```
预设配置项:
- `site_title` - 网站标题(默认:"OPS 运营管理系统"
- `site_description` - 软件说明(默认:"点击下方按钮下载移动端 APP")
- `logo_path` - Logo 路径(默认:"logo.png"
### 目录结构
```
php_app_downloader/
├── index.php # 主页(显示所有版本)
├── download.php # 下载接口(支持按ID下载)
├── logo.png # 默认 Logo
├── admin/ # 管理后端目录
│ ├── index.php # 登录页面
│ ├── dashboard.php # 管理面板主页
│ ├── upload.php # 文件上传处理
│ ├── config.php # 配置管理页面
│ ├── delete.php # 删除应用接口
│ ├── logout.php # 登出
│ └── auth.php # 认证中间件
├── includes/ # 共享代码
│ ├── db.php # 数据库连接和初始化
│ └── functions.php # 通用函数
├── data/ # 数据存储目录
│ ├── apps/ # 上传的 APK 文件
│ ├── uploads/ # 上传的 Logo
│ └── database.db # SQLite 数据库
└── assets/ # 静态资源
└── admin.css # 管理后台样式
```
## 实现步骤
### 1. 创建基础设施(includes/
#### 1.1 数据库连接(includes/db.php
- 创建 SQLite 连接
- 自动初始化数据库结构(如果不存在)
- 插入默认配置数据
#### 1.2 通用函数(includes/functions.php
- `getConfig($key)` - 获取配置
- `updateConfig($key, $value)` - 更新配置
- `formatFileSize($bytes)` - 格式化文件大小
- `isLoggedIn()` - 检查登录状态
### 2. 创建目录结构
- 创建 `data/`, `data/apps/`, `data/uploads/`, `admin/`, `includes/`, `assets/`
- 设置适当的权限(777 for data/ 及子目录)
### 3. 实现管理后端(admin/
#### 3.1 登录页面(admin/index.php
- 简洁的登录表单
- 默认用户名/密码:admin/admin
- 使用 Session 管理登录状态
- 成功后跳转到 dashboard.php
#### 3.2 认证中间件(admin/auth.php
- 检查 Session 中的登录状态
- 未登录则重定向到登录页面
- 被其他后台页面 include
#### 3.3 管理面板(admin/dashboard.php
- 显示所有已上传的应用版本(表格形式)
- 上传新应用的表单(文件 + 版本号 + 描述)
- 删除应用的功能
- 链接到配置页面
#### 3.4 文件上传处理(admin/upload.php
- 接收 POST 请求
- 验证文件类型(仅允许 .apk
- 生成唯一文件名(时间戳_原文件名)
- 移动文件到 data/apps/
- 插入数据库记录
- 返回 JSON 响应或重定向
#### 3.5 配置管理(admin/config.php
- 表单显示当前配置
- 网站标题输入框
- 软件说明文本框
- Logo 上传(支持 jpg/png/gif
- 保存到数据库
- Logo 上传到 data/uploads/ 并更新配置
#### 3.6 删除接口(admin/delete.php
- 接收 app ID
- 从数据库删除记录
- 删除物理文件
- 重定向回 dashboard
#### 3.7 登出(admin/logout.php
- 销毁 Session
- 重定向到登录页面
### 4. 更新前端
#### 4.1 主页(index.php
**功能改进:**
- 从数据库读取配置(标题、说明、Logo)
- 显示所有已发布的应用版本列表(不只是最新的一个)
- 每个版本显示:版本号、描述、上传时间、文件大小
- 最新版本在最前面(ORDER BY upload_time DESC
**样式重写:**
- 现代化的卡片布局
- 响应式设计(移动端友好)
- 更好的视觉层次
- 使用渐变背景和阴影效果
- 每个版本一个下载按钮
#### 4.2 下载接口(download.php
**功能改进:**
- 接收 `id` 参数(GET 请求)
- 从数据库查询应用信息
- 返回文件路径用于下载
- 保留向后兼容(如果没有 id,返回最新版本)
### 5. 管理后台样式(assets/admin.css
- 简洁的管理界面样式
- 表格样式
- 表单样式
- 按钮和交互元素
- 侧边栏导航(可选)
## 安全考虑
1. **文件上传安全:**
- 验证文件扩展名
- 限制文件大小
- 使用随机文件名防止覆盖
2. **认证安全:**
- 使用 Session 管理
- 密码硬编码(后续可改为数据库存储的加密密码)
3. **SQL 注入防护:**
- 使用 PDO 预处理语句
4. **XSS 防护:**
- 输出时使用 htmlspecialchars()
## 实现顺序
1. ✅ 创建目录结构
2. ✅ 实现 includes/db.php(数据库初始化)
3. ✅ 实现 includes/functions.php
4. ✅ 实现 admin/index.php(登录页面)
5. ✅ 实现 admin/auth.php
6. ✅ 实现 admin/dashboard.php
7. ✅ 实现 admin/upload.php
8. ✅ 实现 admin/config.php
9. ✅ 实现 admin/delete.php
10. ✅ 实现 admin/logout.php
11. ✅ 更新 index.php(前端)
12. ✅ 更新 download.php
13. ✅ 创建 assets/admin.css
14. ✅ 测试所有功能
## 验证清单
- [ ] 可以登录管理后台(admin/admin
- [ ] 可以上传 APK 文件
- [ ] 上传的文件保存在 data/apps/
- [ ] 主页显示所有版本,最新的在前
- [ ] 可以下载各个版本
- [ ] 可以在后台删除版本
- [ ] 可以配置网站标题
- [ ] 可以配置软件说明
- [ ] 可以上传和更换 Logo
- [ ] 前端样式美观且响应式
## 预计文件清单
**新建文件:**
- admin/index.php
- admin/dashboard.php
- admin/upload.php
- admin/config.php
- admin/delete.php
- admin/logout.php
- admin/auth.php
- includes/db.php
- includes/functions.php
- assets/admin.css
**修改文件:**
- index.php
- download.php
**创建目录:**
- data/
- data/apps/
- data/uploads/
- admin/
- includes/
- assets/