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