221 lines
5.4 KiB
Markdown
221 lines
5.4 KiB
Markdown
# 软件发布平台
|
||
|
||
一个简单易用的软件发布管理系统,支持多版本管理和在线下载。
|
||
|
||
## 功能特性
|
||
|
||
✅ **后台管理系统**
|
||
- 用户登录验证(默认用户名/密码:admin/admin)
|
||
- 密码加密存储(使用 PHP password_hash)
|
||
- 在线修改密码功能
|
||
- 上传 APK 文件到服务器
|
||
- 版本管理(查看、删除)
|
||
- 网站配置(标题、说明、Logo)
|
||
|
||
✅ **前端展示**
|
||
- 显示所有已发布的应用版本
|
||
- 最新版本优先显示
|
||
- 版本详情(版本号、描述、上传时间、文件大小)
|
||
- 一键下载功能
|
||
|
||
✅ **数据存储**
|
||
- 使用 SQLite 文件数据库
|
||
- APK 文件存储在 `data/apps/` 目录
|
||
- Logo 文件存储在 `data/uploads/` 目录
|
||
- 用户密码加密存储
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
php_app_downloader/
|
||
├── index.php # 主页(显示所有版本)
|
||
├── download.php # 下载接口
|
||
├── 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. 环境要求
|
||
- PHP 7.0+
|
||
- SQLite 支持(PHP 默认包含)
|
||
- Web 服务器(Apache/Nginx)
|
||
|
||
### 2. 安装步骤
|
||
|
||
1. 将项目文件上传到 Web 服务器
|
||
2. 确保 `data/` 目录有写权限(已设置为 777)
|
||
3. 访问网站首页,数据库会自动初始化
|
||
|
||
### 3. 管理后台
|
||
|
||
访问 `/admin/` 进入管理后台
|
||
|
||
**默认登录信息:**
|
||
- 用户名:`admin`
|
||
- 密码:`admin`
|
||
|
||
**功能说明:**
|
||
|
||
#### 上传应用
|
||
1. 在管理面板点击"上传新应用"
|
||
2. 选择 APK 文件
|
||
3. 填写版本号(可选)
|
||
4. 填写版本描述(可选)
|
||
5. 点击"上传应用"
|
||
|
||
#### 管理版本
|
||
- 查看所有已发布的版本
|
||
- 下载任意版本
|
||
- 删除不需要的版本
|
||
|
||
#### 网站配置
|
||
1. 点击"网站配置"
|
||
2. 修改网站标题
|
||
3. 修改软件说明
|
||
4. 上传新的 Logo(支持 JPG/PNG/GIF)
|
||
5. 点击"保存配置"
|
||
|
||
#### 修改密码
|
||
1. 点击顶部导航的"修改密码"
|
||
2. 输入当前密码
|
||
3. 输入新密码(至少4位)
|
||
4. 确认新密码
|
||
5. 点击"修改密码"
|
||
|
||
**重要提示:** 首次登录后请立即修改默认密码以提高安全性!
|
||
|
||
### 4. 前端使用
|
||
|
||
- 访问网站首页查看所有版本
|
||
- 点击"立即下载"按钮下载对应版本
|
||
- 右下角有"管理后台"快捷入口
|
||
|
||
## 数据库结构
|
||
|
||
### apps 表
|
||
存储应用版本信息
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | INTEGER | 主键,自增 |
|
||
| filename | TEXT | 存储的文件名 |
|
||
| original_name | TEXT | 原始文件名 |
|
||
| version | TEXT | 版本号 |
|
||
| description | TEXT | 版本描述 |
|
||
| upload_time | DATETIME | 上传时间 |
|
||
| file_size | INTEGER | 文件大小(字节)|
|
||
|
||
### config 表
|
||
存储网站配置
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| key | TEXT | 配置键(主键)|
|
||
| value | TEXT | 配置值 |
|
||
|
||
**预设配置项:**
|
||
- `site_title` - 网站标题
|
||
- `site_description` - 软件说明
|
||
- `logo_path` - Logo 路径
|
||
|
||
### users 表
|
||
存储用户账号信息
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | INTEGER | 主键,自增 |
|
||
| username | TEXT | 用户名(唯一)|
|
||
| password | TEXT | 加密后的密码 |
|
||
| created_at | DATETIME | 创建时间 |
|
||
|
||
## API 接口
|
||
|
||
### 下载接口
|
||
`GET download.php?id={app_id}`
|
||
|
||
**参数:**
|
||
- `id` (可选) - 应用 ID,不传则返回最新版本
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"success": true,
|
||
"file": "data/apps/1719223456_app.apk",
|
||
"filename": "app.apk",
|
||
"version": "1.0.0",
|
||
"date": "2024-06-24 17:30:56"
|
||
}
|
||
```
|
||
|
||
## 安全建议
|
||
|
||
1. **修改默认密码**
|
||
- 当前密码硬编码在 `admin/index.php`
|
||
- 建议修改为复杂密码
|
||
|
||
2. **限制文件上传**
|
||
- 当前仅允许 `.apk` 文件
|
||
- 可根据需要调整文件类型限制
|
||
|
||
3. **数据备份**
|
||
- 定期备份 `data/` 目录
|
||
- 包含数据库和所有上传的文件
|
||
|
||
4. **访问控制**
|
||
- 建议通过 Web 服务器配置限制 `/admin/` 访问
|
||
- 可添加 IP 白名单
|
||
|
||
## 技术栈
|
||
|
||
- **后端:** PHP + SQLite
|
||
- **前端:** 原生 HTML/CSS/JavaScript
|
||
- **样式:** 现代化渐变设计,响应式布局
|
||
|
||
## 更新日志
|
||
|
||
### v2.1 (2024-06-24)
|
||
- ✅ 新增用户密码管理功能
|
||
- ✅ 密码使用 password_hash 加密存储
|
||
- ✅ 支持在线修改密码
|
||
- ✅ 添加 users 数据表
|
||
- ✅ 数据库自动升级机制
|
||
|
||
### v2.0 (2024-06-24)
|
||
- ✅ 新增管理后台系统
|
||
- ✅ 新增用户登录功能
|
||
- ✅ 支持多版本管理
|
||
- ✅ 支持在线上传 APK
|
||
- ✅ 支持网站配置管理
|
||
- ✅ 重写前端样式
|
||
- ✅ 使用 SQLite 数据库
|
||
- ✅ PHP 自动创建所需目录
|
||
|
||
### v1.0
|
||
- 基础下载功能
|
||
- 显示最新版本
|
||
|
||
## 许可证
|
||
|
||
MIT License
|
||
|
||
---
|
||
|
||
如有问题或建议,欢迎反馈!
|