232 lines
6.4 KiB
Markdown
232 lines
6.4 KiB
Markdown
# 软件发布平台完善计划
|
||
|
||
## 项目目标
|
||
将现有的简单下载页面升级为功能完整的软件发布平台,包含后端管理、版本管理和配置系统。
|
||
|
||
## 技术方案
|
||
|
||
### 数据库选择
|
||
- 使用 **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/
|