# PHP_baoming
**Repository Path**: BD8EFG/php_baoming
## Basic Information
- **Project Name**: PHP_baoming
- **Description**: PHP报名系统
- **Primary Language**: PHP
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: https://bm.gt.tc
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-25
- **Last Updated**: 2026-07-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PHP+JSON 多主题报名系统
> 版本:`v1.0.1_260720` | 作者:EDUCN | 邮箱:by2312@qq.com
基于原生 PHP + JSON 文件存储的多主题活动报名管理系统,**无需 MySQL/SQLite**,开箱即用,支持一键安装、伪静态、SMTP 邮件、实名认证、IP 属地识别等。
- **演示站点**:
- **授权服务器**:
- **卡密购买**:
- **交流群**:1097418289
---
## 一、功能特性
### 用户端
- 用户注册 / 登录 / 找回密码(支持手机号、用户名、邮箱登录)
- 实名认证(真实姓名 + 身份证号)
- 活动浏览、报名、修改、查看提交记录
- 我的报名记录管理
- 用户可发起并管理自己创建的活动(可后台开关)
- 个人资料管理、修改密码
- 活动分享(生成二维码 + 链接复制)
### 管理端
- 用户管理:查看、编辑、删除、添加用户
- 活动管理:创建、编辑、关闭、删除活动;自定义报名字段
- 报名管理:查看、统计、导出报名记录
- 报名统计:按活动维度统计报名情况
- 系统设置:站点信息、SMTP 邮件、伪静态、ICP 备案(支持 HTML)
- 系统授权:在线激活、续期、授权信息查看
### 系统特性
- **原生 PHP + JSON**:无数据库依赖,部署简单
- **一键安装**:访问 `install.php` 自动初始化数据与配置
- **伪静态支持**:后台一键开关,隐藏 `.php` 后缀,首页地址不含 `index`
- **SMTP 邮件**:三级回退机制(OpenSSL > curl+SSL > PHP mail())
- **IP 属地识别**:多 API 备用查询 + 30 天文件缓存
- **安全防护**:CSRF Token、敏感文件访问限制、目录浏览禁止
- **多时区适配**:默认上海时区(Asia/Shanghai)
- **响应式设计**:适配 PC 与移动端
---
## 二、运行环境
| 项目 | 要求 | 建议 |
| --- | --- | --- |
| PHP 版本 | >= 7.0 | PHP 7.4 / 8.x |
| PHP 扩展 | JSON | mbstring、cURL、OpenSSL |
| Web 服务器 | Apache / Nginx / IIS | Apache + mod_rewrite |
| 数据库 | 无需 | - |
| 时区 | Asia/Shanghai | - |
---
## 三、安装教程
### 方式一:一键安装(推荐)
1. 上传所有文件到 Web 服务器根目录
2. 浏览器访问 `http://your-domain/install.php`
3. 按向导填写:
- 站点名称、站点 URL
- 管理员用户名、手机号、邮箱、登录密码
4. 点击「确认并安装」,等待完成
5. 安装成功后,`install.php` 会自动重命名为 `install.php.bak`
6. 使用刚才设置的管理员账号登录 `login.php`
> 安装会在 `data/` 目录生成 `install.lock` 锁文件。如需重新安装,请先删除该锁文件。
### 方式二:手动安装
1. 上传所有文件到 Web 服务器根目录
2. 确保 `data/` 目录存在且可写(0755)
3. 确保 `inc/` 目录可写(用于保存配置)
4. 确保 `uploads/` 目录存在且可写
5. 手动初始化 `data/bm_user.json`、`data/bm_info.json`、`data/bm_jilu.json`
6. 修改 `inc/json.php` 配置文件中的 `admin_email` 等参数
7. 访问 `login.php` 登录
---
## 四、目录结构
```
www/
├── admin/ # 后台管理目录
│ ├── baoming.php # 报名管理
│ ├── huodong.php # 活动管理
│ ├── index.php # 后台入口(跳转)
│ ├── login.php # 后台登录入口(跳转)
│ ├── shezhi.php # 系统设置(基本/SMTP/伪静态)
│ ├── shouquan.php # 授权管理
│ ├── tongji.php # 报名统计
│ ├── user.php # 用户管理
│ ├── 404.php # 后台 404 页面
│ └── .htaccess # 后台伪静态/安全规则
├── data/ # JSON 数据存储目录(禁止直接访问)
│ ├── bm_user.json # 用户表
│ ├── bm_info.json # 活动表
│ ├── bm_jilu.json # 报名记录表
│ ├── install.lock # 安装锁文件(安装后生成)
│ └── ip_cache/ # IP 属地查询缓存目录
├── inc/ # 公共代码目录
│ ├── conn.php # 系统初始化、常量定义、时区设置
│ ├── json.php # 站点配置文件(可写入)
│ ├── sqls.php # JSONDatabase 类(SQL-like 查询)
│ ├── pubs.php # 公共函数库(url/save_config/邮件等)
│ ├── mailer.php # SMTP 邮件发送
│ ├── license.php # 授权管理类
│ └── js.js # 公共 JS(AJAX 封装等)
├── uploads/ # 用户上传目录
├── .htaccess # 根目录伪静态/安全规则
├── 404.php # 根目录 404 页面
├── index.php # 首页(活动列表 + 报名)
├── install.php # 一键安装程序
├── login.php # 用户登录/注册/找回密码
├── profile.php # 个人中心
├── realname.php # 实名认证
├── my_activity.php # 我发起的活动
├── my_signups.php # 我的报名记录
├── activity_signups.php # 报名管理(用户视角)
├── reset_password.php # 密码重置页面
├── favicon.svg # 站点图标
└── README.md # 本文档
```
---
## 五、配置说明
### 站点配置(`inc/json.php`)
| 字段 | 说明 | 示例 |
| --- | --- | --- |
| `site_name` | 站点名称 | 报名系统 |
| `site_keywords` | SEO 关键词 | 活动,报名,管理 |
| `site_description` | SEO 描述 | 报名管理系统 |
| `admin_email` | 管理员邮箱 | admin@example.com |
| `icp_beian` | ICP 备案号(**支持 HTML**) | `苏ICP备XXXX号` |
| `site_copyright` | 版权信息 | © 2026 报名系统 |
| `page_size` | 每页记录数 | 10 |
| `smtp_*` | SMTP 邮件配置 | 见后台「邮件设置」 |
| `user_can_create_activity` | 用户能否发起活动 | true / false |
| `rewrite_enabled` | 伪静态开关 | false(默认关闭) |
| `reg_fields` | 默认报名字段配置 | 数组 |
### 伪静态说明
后台「系统设置 → 伪静态设置」可一键开关:
- **关闭**(默认):URL 显示 `.php` 后缀,兼容性最佳
- **开启**:URL 隐藏 `.php` 后缀,首页地址为 `/`,分享链接为 `/share/{id}`
开启后系统会自动更新 `.htaccess` 与 `admin/.htaccess` 规则。Nginx 用户需自行配置对应 rewrite 规则。
### SMTP 邮件配置
后台「系统设置 → 邮件设置」配置 SMTP,发送机制采用三级回退:
1. **OpenSSL 扩展**(首选)
2. **cURL + SSL**(OpenSSL 不可用时)
3. **PHP 原生 `mail()`**(兜底)
> 虚拟主机常禁用 465 端口出站,建议使用 587 端口 + TLS 加密;若 PHP TLS 握手失败,需在插件中开启「允许不安全 SSL 连接」。
---
## 六、数据表结构
### `bm_user`(用户表)
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| id | int | 用户 ID(自增) |
| 用户名 | string | 登录账号 |
| 手机号 | string | 11 位手机号 |
| 密码 | string | MD5 加密 |
| 类型 | string | `admin` / `user` |
| 邮箱 | string | 邮箱地址 |
| 实名认证 | int | 0 未认证 / 1 已认证 |
| 真实姓名 | string | 实名信息 |
| 身份证号 | string | 实名信息 |
| 认证时间 | datetime | 认证时间 |
| 备注 | string | 管理员备注 |
| 添加时间 | datetime | 注册时间 |
| 最后登录 | datetime | 最后登录时间 |
### `bm_info`(活动表)
主要字段:`id`、`活动名称`、`活动选项`、`报名须知`、`活动开关`、`开始时间`、`结束时间`、`报名开始时间`、`报名结束时间`、`限定报名`、`使用自定义字段`、`自定义字段`、`开始前隐藏`、`结束后隐藏`、`报名须知图片`。
### `bm_jilu`(报名记录表)
主要字段:`id`、`活动ID`、`用户名`、`提交时间`、`当前状态`、`手机号`、`真实姓名`、`身份证号`、`选择内容`、`IP`、`IP属地`、`field_data`(自定义字段数据 JSON)。
---
## 七、安全建议
1. **安装后立即删除** `install.php`(系统会自动重命名为 `.bak`)
2. **`data/` 目录禁止公网访问**:默认 `.htaccess` 已禁止 `.json` 文件访问;Nginx 用户需手动配置
3. **修改默认管理员密码**:安装后第一时间登录后台修改
4. **启用 HTTPS**:保护用户数据传输安全
5. **定期备份** `data/` 目录下的 JSON 文件
6. **关闭 `display_errors`**:生产环境在 `php.ini` 中设置 `display_errors = Off`
---
## 八、常见问题
### Q1:访问首页报 500 错误?
请检查 PHP 版本(需 >= 7.0)和必需扩展(JSON)。`php -l inc/pubs.php` 可校验语法。
### Q2:伪静态开启后页面 404?
- 确认 Apache 已启用 `mod_rewrite`
- 确认 `.htaccess` 文件可读
- Nginx/IIS 用户需手动配置 rewrite 规则
### Q3:邮件发送失败?
- 检查 SMTP 配置是否正确
- 虚拟主机优先使用 587 端口 + TLS
- 开启「允许不安全 SSL 连接」选项
- 查看后台「邮件设置」中的错误提示
### Q4:忘记管理员密码?
- 删除 `data/install.lock`,重新运行 `install.php`(会重置数据)
- 或直接编辑 `data/bm_user.json` 中的 `密码` 字段为 `e10adc3949ba59abbe56e057f20f883e`(即 `123456`)
### Q5:如何升级系统?
1. 备份 `data/` 目录
2. 备份 `inc/json.php` 配置文件
3. 覆盖上传新版本代码(保留 `data/` 和 `inc/json.php`)
4. 访问后台检查是否需要重新配置
### Q6:ICP 备案如何添加链接?
后台「系统设置 → 基本设置 → ICP备案号」字段支持 HTML,例如:
```html
苏ICP备XXXXXXXX号
```
备案号会显示在登录页、首页、个人中心、我的报名等页面底部。
---
## 九、参与贡献
1. Fork 本仓库
2. 新建 `Feat_xxx` 分支
3. 提交代码
4. 新建 Pull Request
---
## 十、版权信息
- 作者:EDUCN
- 邮箱:by2312@qq.com
- 版本:v1.0.1_260720
- 授权:商用需购买授权码,详见
- 版权所有,保留发行权和署名权