Files
2026-06-24 17:45:24 +08:00

232 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 软件发布平台完善计划
## 项目目标
将现有的简单下载页面升级为功能完整的软件发布平台,包含后端管理、版本管理和配置系统。
## 技术方案
### 数据库选择
- 使用 **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/