From 1b75d4b0a467f16e43ba285354e7b5d3f3b2fa31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=97=A0=E9=97=BB=E9=A3=8E?= Date: Wed, 24 Jun 2026 18:17:13 +0800 Subject: [PATCH] up --- README.md | 30 +++++++++++ admin/change_password.php | 105 ++++++++++++++++++++++++++++++++++++++ admin/config.php | 1 + admin/dashboard.php | 1 + admin/index.php | 10 +++- includes/db.php | 31 +++++++++++ 6 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 admin/change_password.php diff --git a/README.md b/README.md index 2c64124..b953609 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ ✅ **后台管理系统** - 用户登录验证(默认用户名/密码:admin/admin) +- 密码加密存储(使用 PHP password_hash) +- 在线修改密码功能 - 上传 APK 文件到服务器 - 版本管理(查看、删除) - 网站配置(标题、说明、Logo) @@ -20,6 +22,7 @@ - 使用 SQLite 文件数据库 - APK 文件存储在 `data/apps/` 目录 - Logo 文件存储在 `data/uploads/` 目录 +- 用户密码加密存储 ## 目录结构 @@ -89,6 +92,15 @@ php_app_downloader/ 4. 上传新的 Logo(支持 JPG/PNG/GIF) 5. 点击"保存配置" +#### 修改密码 +1. 点击顶部导航的"修改密码" +2. 输入当前密码 +3. 输入新密码(至少4位) +4. 确认新密码 +5. 点击"修改密码" + +**重要提示:** 首次登录后请立即修改默认密码以提高安全性! + ### 4. 前端使用 - 访问网站首页查看所有版本 @@ -123,6 +135,16 @@ php_app_downloader/ - `site_description` - 软件说明 - `logo_path` - Logo 路径 +### users 表 +存储用户账号信息 + +| 字段 | 类型 | 说明 | +|------|------|------| +| id | INTEGER | 主键,自增 | +| username | TEXT | 用户名(唯一)| +| password | TEXT | 加密后的密码 | +| created_at | DATETIME | 创建时间 | + ## API 接口 ### 下载接口 @@ -168,6 +190,13 @@ php_app_downloader/ ## 更新日志 +### v2.1 (2024-06-24) +- ✅ 新增用户密码管理功能 +- ✅ 密码使用 password_hash 加密存储 +- ✅ 支持在线修改密码 +- ✅ 添加 users 数据表 +- ✅ 数据库自动升级机制 + ### v2.0 (2024-06-24) - ✅ 新增管理后台系统 - ✅ 新增用户登录功能 @@ -176,6 +205,7 @@ php_app_downloader/ - ✅ 支持网站配置管理 - ✅ 重写前端样式 - ✅ 使用 SQLite 数据库 +- ✅ PHP 自动创建所需目录 ### v1.0 - 基础下载功能 diff --git a/admin/change_password.php b/admin/change_password.php new file mode 100644 index 0000000..eb0502e --- /dev/null +++ b/admin/change_password.php @@ -0,0 +1,105 @@ +prepare("SELECT * FROM users WHERE id = ?"); + $stmt->execute([$_SESSION['user_id']]); + $user = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($user && password_verify($old_password, $user['password'])) { + // 更新密码 + $new_password_hash = password_hash($new_password, PASSWORD_DEFAULT); + $stmt = $db->prepare("UPDATE users SET password = ? WHERE id = ?"); + + if ($stmt->execute([$new_password_hash, $_SESSION['user_id']])) { + $success = '密码修改成功!'; + } else { + $error = '密码修改失败,请重试'; + } + } else { + $error = '旧密码错误'; + } + } +} +?> + + + + + + 修改密码 + + + +
+
+

修改密码

+ +
+ +
+ +
+ + + +
+ + +
+

修改登录密码

+
+
+ + +
+ +
+ + + 密码长度至少4位 +
+ +
+ + +
+ + +
+
+ +
+

安全提示

+
    +
  • 密码长度建议至少8位,包含字母、数字和特殊字符
  • +
  • 不要使用过于简单的密码,如:123456、admin 等
  • +
  • 定期更换密码以提高安全性
  • +
  • 不要将密码告诉他人
  • +
+
+
+
+ + diff --git a/admin/config.php b/admin/config.php index d01b1be..f49a1c3 100644 --- a/admin/config.php +++ b/admin/config.php @@ -67,6 +67,7 @@ $logo_path = getConfig('logo_path', 'logo.png');

网站配置

返回管理面板 + 修改密码 退出
diff --git a/admin/dashboard.php b/admin/dashboard.php index 7a64f46..1cd3115 100644 --- a/admin/dashboard.php +++ b/admin/dashboard.php @@ -22,6 +22,7 @@ $apps = $stmt->fetchAll(PDO::FETCH_ASSOC);
欢迎, 网站配置 + 修改密码 退出
diff --git a/admin/index.php b/admin/index.php index f248ad6..668a501 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,5 +1,6 @@ prepare("SELECT * FROM users WHERE username = ?"); + $stmt->execute([$username]); + $user = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($user && password_verify($password, $user['password'])) { $_SESSION['admin_logged_in'] = true; $_SESSION['username'] = $username; + $_SESSION['user_id'] = $user['id']; header('Location: dashboard.php'); exit; } else { diff --git a/includes/db.php b/includes/db.php index b484268..2daed26 100644 --- a/includes/db.php +++ b/includes/db.php @@ -66,6 +66,16 @@ try { ) "); + // 创建 users 表 + $db->exec(" + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password TEXT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + "); + // 插入默认配置 $defaults = [ ['site_title', 'OPS 运营管理系统'], @@ -78,10 +88,31 @@ try { $stmt->execute($config); } + // 插入默认管理员账号(密码使用 password_hash 加密) + $stmt = $db->prepare("INSERT INTO users (username, password) VALUES (?, ?)"); + $stmt->execute(['admin', password_hash('admin', PASSWORD_DEFAULT)]); + // 设置新创建的数据库文件权限 @chmod($db_path, 0666); } + // 数据库升级:如果 users 表不存在,创建它并迁移默认用户 + $tables = $db->query("SELECT name FROM sqlite_master WHERE type='table' AND name='users'")->fetchAll(); + if (empty($tables)) { + $db->exec(" + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password TEXT NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + "); + + // 插入默认管理员账号 + $stmt = $db->prepare("INSERT OR IGNORE INTO users (username, password) VALUES (?, ?)"); + $stmt->execute(['admin', password_hash('admin', PASSWORD_DEFAULT)]); + } + } catch (PDOException $e) { die("数据库连接失败: " . $e->getMessage() . "

请确保:
1. data 目录存在且可写 (chmod 777 data)
2. Web 服务器用户有权限创建文件"); }