# 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 - 授权:商用需购买授权码,详见 - 版权所有,保留发行权和署名权