简单 · 安全 · 开箱即用 的班级收支管理工具
上传即用 · 无需命令行 · 宝塔面板友好 · 支持远程一键升级
✨ 功能特性 · 🚀 快速开始 · 🎨 界面亮点 · 🔧 系统要求 · 📁 项目结构 · 🛡️ 安全设计 · 🔄 远程升级 · 📌 版本历史 · 🤝 贡献 · 📄 许可证
| 💰 收支管理 收入/支出分类管理 · 子分类 + 来源信息 凭证图片上传 · Excel 一键导入导出 |
👥 多角色权限 班主任 / 管理员 / 班长 / 副班长 财务委员 / 同学 · 细粒度权限矩阵 |
📋 花名册 & 缴费 班级名单一键导入 · 免缴学生设置 多轮缴费明细追踪 · 欠费名单导出 |
| 📜 操作日志 全操作留痕 · 不可删除不可修改 记录 IP / UA / 浏览器指纹 |
🛡️ 安全分析 同指纹多账号检测 · 同账号多 IP 告警 登录失败统计 · 登录历史审计 |
🌗 主题 & 体验 暗色 / 亮色自动切换 QQ / 微信内打开友好 · 移动端响应式 |
| 🔄 远程升级 后台一键检查更新 · 自动备份后升级 可随时回滚 |
🗑️ 回收站 软删除保护 · 误删可恢复 彻底删除需二次确认 |
📊 数据仪表盘 收支趋势图表 · 支出分类占比 最近收支速览 · 学期报表 |
⏱️ 全程约 3 分钟,无需任何命令行操作
# 1️⃣ 将项目文件上传到网站根目录(如 /www/wwwroot/classfund.陌沫.cn)
# 2️⃣ 浏览器访问你的域名
# 3️⃣ 自动跳转安装向导 → 填写数据库信息 → 一键建表
# 4️⃣ 创建管理员账号 → ✅ 完成!| 步骤 | 操作 |
|---|---|
| 1 | 宝塔面板 → 网站 → 添加站点(PHP 版本选 8.2) |
| 2 | 将项目文件上传至站点根目录 |
| 3 | 宝塔 → 数据库 → 创建数据库(记下库名 / 用户名 / 密码) |
| 4 | 访问站点域名,跟随安装向导完成部署 |
| 5 | 🛡️ 建议删除 install.php 并开启 SSL |
| 环境 | 说明 |
|---|---|
| 虚拟主机 | 上传至 public_html,在主机面板创建 MySQL 数据库后访问安装向导 |
| Docker | 使用 php:8.2-apache 或 php:8.2-fpm + MySQL 8 镜像,挂载项目目录 |
| 特性 | 效果 |
|---|---|
| 🎇 登录页 | 深蓝紫渐变 + 光晕动效 + 玻璃拟态卡片 + 入场动画 |
| 🎨 视觉升级 | 渐变徽章 / 扫光按钮 / 卡片光条 / 暗色主题全适配 |
| 📱 多设备自适应 | 手机 / 平板 / 桌面 / 超宽屏 / 横屏全尺寸适配 |
| ⚡ 缓存加速 | Cloudflare 边缘缓存 + 静态资源 1 年 immutable + gzip |
| 🛡️ 安全兜底 | 网关错误自动重试 · API 禁止缓存 · 真实 IP 审计 |
| 依赖 | 版本 | 说明 |
|---|---|---|
| 🐘 PHP | ≥ 8.0 | 需要 pdo_mysql、json、mbstring 扩展 |
| 🗄️ MySQL | ≥ 5.7 | 建议 8.0,字符集 utf8mb4 |
| 📦 ZipArchive | — | Excel 导入导出需要 |
💡 宝塔面板 → 软件商店 → PHP 设置 中可一键启用所需扩展
class-fund-system/
├── index.php # 前端入口(SPA 单页应用)
├── api.php # API 路由器(全部请求入口)
├── install.php # 安装向导(部署后可删除)
├── config.php # 配置 + 数据库迁移 + 权限矩阵
├── schema.sql # 数据库结构
├── version.json # 版本信息(远程升级用)
├── assets/
│ ├── css/style.css # 样式(含暗色主题 + 响应式)
│ └── js/app.js # 前端逻辑
├── src/
│ ├── auth.php # 登录 / 访客 / 修改密码
│ ├── transactions.php # 收支 CRUD + 仪表盘
│ ├── users.php # 用户管理 / 封禁
│ ├── payments.php # 花名册 + 缴费追踪
│ ├── import_export.php # Excel 导入导出 / 图片上传
│ ├── logs.php # 操作日志
│ ├── security.php # 安全分析 / 回收站
│ ├── upgrade.php # 远程升级
│ ├── tfpdf.php # PDF 生成库(tFPDF,支持中文)
│ ├── font/unifont/ # 文泉驿中文字体 + 预生成字体指标
│ └── helpers.php # CSRF / 速率限制 / 输入校验 / 导出辅助
└── uploads/ # 凭证图片(自动创建)
本项目将安全作为一等公民,内置多层防护:
| 防护层 | 实现方式 |
|---|---|
| 🔐 CSRF 防护 | 每次会话生成随机 Token,写操作强制校验 |
| 👤 会话安全 | 登录后重新生成 Session ID(防会话固定攻击) |
| ⏱️ 速率限制 | 登录接口每 IP 每分钟限 5 次,文件锁原子计数 |
| 🧹 XSS 防护 | 前端内容统一转义(含引号)+ 图片 URL 协议白名单,后端输入校验与长度限制 |
| 📜 操作日志 | 应用层永不执行 UPDATE/DELETE,审计不可篡改 |
| 🖥️ 登录审计 | 每次登录尝试均记录 IP / UA / 浏览器指纹 / 失败原因 |
| 🔍 异常检测 | 同指纹多账号、同账号多 IP、同 IP 多账号、暴力破解统计 |
| 🚫 IP 黑名单 | 一键封禁可疑 IP,API 层强制拦截;失败原因分布与安全事件流 |
| 🧾 安全事件 | CSRF 失败 / 非法上传 / 被拦截访问等落库留痕,面板可查 |
| 📊 安全审计 | 24h/7天/30天/全部筛选 · 用户安全画像 · 登录时段分布 · 新 IP 登录 · 登录明细分页下钻 · CSV 导出 |
| 🧬 设备指纹 | 浏览器/系统/分辨率/时区/核心数哈希指纹(24 位十六进制),用于同指纹多账号检测 |
| 🗑️ 软删除 | 收支记录删除进回收站,可恢复,防误删 |
| 🖼️ 上传安全 | 图片按 MIME 签名校验,扩展名白名单,目录禁执行脚本 |
| 🚫 权限矩阵 | 10+ 项细粒度权限,多角色取最高优先级 |
| 📦 升级安全 | 升级包来源白名单 + 可选 sha256 完整性校验 + 下载/解压体积上限 |
| 🔒 敏感文件 | .htaccess 随仓库发布并封禁 db_config.json / config.php / schema.sql / backup_* |
.htaccess 只对 Apache 生效。nginx 站点请务必在 网站 → 配置文件 的 server {} 中加入:
# 禁止下载数据库配置与建表脚本,禁止访问升级备份目录
location ~* (db_config\.json|config\.php|schema\.sql)$ { return 404; }
location ^~ /backup_ { return 404; }否则 db_config.json(含数据库账号密码)可能被直接下载。
系统内置一键升级:管理员在 🛡️ 安全分析 → 🔍 检查更新 → 🚀 立即升级,自动完成:
GitHub Release → 下载 ZIP → 全站自动备份 → 解压覆盖 → 完成
- ✅ 升级前自动备份到
backup_日期/,出问题随时回滚 - ✅ 不影响
uploads/凭证图片与db_config.json数据库配置 - ✅ 升级包来源白名单校验(仅允许本仓库 Releases),并在
version.json提供sha256时强制校验完整性 - ✅ 下载/解压均有体积上限,防止内存耗尽与 zip 炸弹
📖 详细发布教程见 UPGRADE.md
| 版本 | 说明 |
|---|---|
| v1.7.3(待发布) | 🛡️ 安全加固:敏感文件防护/升级包校验/前端 XSS 修复 · PDF 中文修复 · 迁移与会话修复 |
| v1.7.2 | 🐛 修复 undefined array key 警告 |
| v1.7.1 | 🐛 修复升级权限问题 |
| v1.7.0 | ✨ 新功能:多图凭证 / 单次免缴 / 学期报表 PDF / 数据看板 |
| v1.6.2 | 🚀 Cloudflare 缓存加速 · 界面视觉升级 + 多设备响应式 · API no-store · 前端错误重试 |
| v1.6.1 | 🔧 修复与体验优化 |
| v1.6 | ✨ 新功能版本 |
| v1.0 | 🎉 首个正式版本 |
📦 完整更新日志见 Releases
欢迎提交 Issue 与 Pull Request!
- Fork 本仓库
- 创建功能分支:
git checkout -b feat/your-feature - 提交改动:
git commit -m "feat: 添加xxx功能" - 推送分支并创建 PR
本项目为个人开源项目,保留所有权利。使用请保留原作者信息。
📒 班级班费管理系统 · 让班费管理更简单、更透明
⭐ 如果这个项目对你有帮助,欢迎点亮 Star!