6.4 KiB
6.4 KiB
软件发布平台完善计划
项目目标
将现有的简单下载页面升级为功能完整的软件发布平台,包含后端管理、版本管理和配置系统。
技术方案
数据库选择
- 使用 SQLite 作为文件数据库(轻量、无需额外配置)
- 数据库文件路径:
data/database.db
数据库设计
apps 表 - 存储应用版本信息
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 表 - 存储网站配置
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)
- 简洁的管理界面样式
- 表格样式
- 表单样式
- 按钮和交互元素
- 侧边栏导航(可选)
安全考虑
-
文件上传安全:
- 验证文件扩展名
- 限制文件大小
- 使用随机文件名防止覆盖
-
认证安全:
- 使用 Session 管理
- 密码硬编码(后续可改为数据库存储的加密密码)
-
SQL 注入防护:
- 使用 PDO 预处理语句
-
XSS 防护:
- 输出时使用 htmlspecialchars()
实现顺序
- ✅ 创建目录结构
- ✅ 实现 includes/db.php(数据库初始化)
- ✅ 实现 includes/functions.php
- ✅ 实现 admin/index.php(登录页面)
- ✅ 实现 admin/auth.php
- ✅ 实现 admin/dashboard.php
- ✅ 实现 admin/upload.php
- ✅ 实现 admin/config.php
- ✅ 实现 admin/delete.php
- ✅ 实现 admin/logout.php
- ✅ 更新 index.php(前端)
- ✅ 更新 download.php
- ✅ 创建 assets/admin.css
- ✅ 测试所有功能
验证清单
- 可以登录管理后台(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/