Skip to content

Repository files navigation

📒 班级班费管理系统

简单 · 安全 · 开箱即用 的班级收支管理工具

上传即用 · 无需命令行 · 宝塔面板友好 · 支持远程一键升级

版本 PHP MySQL Status License

Stars Forks Watchers Issues Last Commit Repo Size


🧭 导航

✨ 功能特性 · 🚀 快速开始 · 🎨 界面亮点 · 🔧 系统要求 · 📁 项目结构 · 🛡️ 安全设计 · 🔄 远程升级 · 📌 版本历史 · 🤝 贡献 · 📄 许可证


✨ 功能特性

💰 收支管理
收入/支出分类管理 · 子分类 + 来源信息
凭证图片上传 · 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-apachephp:8.2-fpm + MySQL 8 镜像,挂载项目目录

🎨 界面亮点

特性 效果
🎇 登录页 深蓝紫渐变 + 光晕动效 + 玻璃拟态卡片 + 入场动画
🎨 视觉升级 渐变徽章 / 扫光按钮 / 卡片光条 / 暗色主题全适配
📱 多设备自适应 手机 / 平板 / 桌面 / 超宽屏 / 横屏全尺寸适配
⚡ 缓存加速 Cloudflare 边缘缓存 + 静态资源 1 年 immutable + gzip
🛡️ 安全兜底 网关错误自动重试 · API 禁止缓存 · 真实 IP 审计

🔧 系统要求

依赖 版本 说明
🐘 PHP ≥ 8.0 需要 pdo_mysqljsonmbstring 扩展
🗄️ 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_*

🌐 nginx 部署必读(宝塔默认使用 nginx)

.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


🤝 贡献

欢迎提交 IssuePull Request

  1. Fork 本仓库
  2. 创建功能分支:git checkout -b feat/your-feature
  3. 提交改动:git commit -m "feat: 添加xxx功能"
  4. 推送分支并创建 PR

📄 许可证

本项目为个人开源项目,保留所有权利。使用请保留原作者信息。


📒 班级班费管理系统 · 让班费管理更简单、更透明

⭐ 如果这个项目对你有帮助,欢迎点亮 Star!

About

班级班费收支管理工具,支持多角色权限、缴费追踪、数据导入导出、操作审计、暗色主题。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages