TIBAO 题宝是我做的第一个完整 Web 项目。它最初来自真实的学习需求:同学之间经常需要整理、分享和练习课程题库,但普通文件传来传去很难管理,也缺少刷题记录、错题回顾、资源市场和收益反馈。
这个项目尝试把“题库管理”和“刷题学习”做成一个平台:
- 用户可以注册、登录、创建自己的题库。
- 题库可以编辑、导入、发布、购买或免费领取。
- 学生可以进入练习模式刷题,系统记录答题情况。
- 错题、收藏、成绩数据和题库收益可以在个人中心查看。
- 通过邀请返佣、资源市场和社区讨论,让题库从个人资料变成可协作流通的学习资源。
它不是一个框架生成的 Demo,而是一个从前台介绍页、登录注册、后台控制台、题库市场、刷题系统到 API 接口都写完整的 PHP 项目。
- 品牌首页与产品介绍
- 合作方案页面
- 联系我们页面
- 隐私政策页面
- 登录、注册、找回密码流程
- 用户注册与登录
- 邮箱验证码注册
- 找回密码与重置密码
- 邀请码注册
- 注册审核逻辑
- 个人资料修改
- 密码修改
- 新建题库
- 编辑题库信息
- 新增、编辑、删除题目
- Excel 批量导入题目
- 设置题库价格
- 发布 / 下架题库
- 我的题库与已购买题库管理
- 按题库进入练习模式
- 支持单选、多选、判断等题型
- 答题结果记录
- 错题回顾
- 收藏题目
- 做题进度与正确率统计
- 公开题库列表
- 免费领取题库
- 购买付费题库
- 微信 / 支付宝收款二维码展示
- 卖家确认收款后授权资源
- 题库收益记录
- 专属邀请码与邀请链接
- 邀请注册奖励
- 首单奖励逻辑
- 社区帖子发布、编辑与查看
- 登录 / 注册接口
- 当前用户信息接口
- 我的题库接口
- 练习开始、下一题、提交答案接口
- Schema 自动探测辅助逻辑
- 后端语言:PHP
- 数据库:MySQL / MariaDB
- 数据库访问:PDO
- 前端:HTML、CSS、JavaScript
- UI:Bootstrap、SB Admin 风格后台模板
- 邮件服务:PHPMailer
- Excel 导入:PhpSpreadsheet
- 认证方式:PHP Session + 密码哈希
.
├── index.php # 前台首页
├── login.php # 登录页
├── register.php # 注册页
├── forgot_password.php # 找回密码
├── backend/
│ ├── db.php # 数据库连接入口
│ ├── config.example.php # 本地配置示例
│ └── auth.php # 登录鉴权
├── api/ # 移动端/异步练习 API
├── sb-admin/ # 用户控制台和题库后台
│ ├── index.php # 控制台首页
│ ├── my_question_bank.php # 我的题库
│ ├── practice.php # 刷题练习
│ ├── resources_questionbanks.php
│ ├── my_account_income.php
│ ├── forum_index.php
│ └── vendor/ # PHPMailer / PhpSpreadsheet 等依赖
├── js/
├── imgbk/
└── styles.css
你需要一个支持 PHP 和 MySQL 的本地环境,例如:
- XAMPP
- phpStudy
- Laragon
- Apache + PHP + MySQL
建议版本:
- PHP 7.4+
- MySQL 5.7+ / MariaDB 10+
复制配置示例:
cp backend/config.example.php backend/config.php然后修改 backend/config.php:
define('TIBAO_DB_HOST', 'localhost');
define('TIBAO_DB_NAME', 'your_database_name');
define('TIBAO_DB_USER', 'your_database_user');
define('TIBAO_DB_PASS', 'your_database_password');如果需要注册验证码和找回密码功能,请继续配置 SMTP:
define('TIBAO_MAIL_HOST', 'smtp.example.com');
define('TIBAO_MAIL_USERNAME', 'noreply@example.com');
define('TIBAO_MAIL_PASSWORD', 'your-smtp-password');
define('TIBAO_MAIL_FROM', 'noreply@example.com');
define('TIBAO_MAIL_FROM_NAME', 'TIBAO 题宝');
define('TIBAO_MAIL_PORT', '465');
define('TIBAO_MAIL_SECURE', 'ssl');将项目放到本地 Web 服务器目录,例如:
htdocs/tibao
然后访问:
http://localhost/tibao/
这个仓库已经做了基础开源净化:
- 数据库账号密码不再硬编码到
backend/db.php - SMTP 邮箱授权码不再硬编码到注册和找回密码页面
- 上传文件、练习状态、收款二维码、测试脚本不会被纳入 Git
- 本地私密配置文件
backend/config.php已加入.gitignore
如果你要部署到公网,请继续检查:
- 数据库表结构和权限
- 上传目录的文件类型限制
- 管理后台权限
- 支付和收益流程
- Session 和 Cookie 安全策略
- SQL 注入、XSS、CSRF 等 Web 安全风险
这是一个早期但完整的个人项目,代码里还保留了很多学习和快速迭代的痕迹。它适合用来展示:
- PHP 原生 Web 项目开发能力
- 后台管理系统搭建能力
- 数据库驱动的业务系统设计
- 题库、刷题、资源市场、收益结算等业务闭环
- 从 0 到 1 完成一个可运行产品的过程
后续可以继续优化:
- 补充数据库建表 SQL
- 抽离公共组件和公共样式
- 引入 Composer 统一管理依赖
- 增加后台管理员权限系统
- 增加 CSRF 防护
- 增加更完整的输入校验
- 增加题库导出功能
- 增加 Docker 一键部署
- 重构为更标准的 MVC 结构
This project is open-sourced under the MIT License.
本项目仅用于学习、研究和个人作品展示。项目中的支付、收益、题库交易等功能属于实验性业务流程,实际商用前需要进一步完善安全、合规、数据备份和用户隐私保护机制。