Files
litianming 08ce60344d Initial commit: 心理咨询预约系统
PHP 前后端一体:首页咨询师列表、预约表单、管理后台、二维码准入与邮件通知;敏感配置与提交数据通过 .gitignore 排除。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 10:17:09 +08:00

130 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 心理咨询 H5
移动端心理咨询预约系统。纯 HTML/CSS/JS 前端 + PHP 后端,医生与议题由 JSON 配置,支持二维码准入与管理端数据导出。
## 功能
- 首页展示可配置咨询师列表
- 点击咨询师或「预约服务」进入咨询表单
- 联系方式必填,咨询议题可选(配置于 `data/topics.json`
- 提交记录本地存储,管理端登录后导出 CSV/JSON
- 二维码访问控制URL 携带 `access` 令牌)
## 环境要求
- PHP 7.4+(需开启 `json``session` 扩展)
- 可写权限:`data/` 目录
## 快速启动
```bash
cd 心理咨询
php -S 0.0.0.0:8080
```
浏览器访问:
| 页面 | 地址 |
|------|------|
| 首页(需带 token | http://localhost:8080/index.html?access=你的accessToken |
| 生成二维码 | http://localhost:8080/qr.html |
| 管理后台 | http://localhost:8080/admin.html |
默认管理账号:`frankfrank` / `frankfrank`(见 `config/app.json`
## 配置说明
详见 [config/README.md](config/README.md)
| 文件 | 用途 |
|------|------|
| `config/app.json` | 站点标题、访问令牌、管理账密、客服电话 |
| `data/doctors.json` | 咨询师列表 |
| `data/topics.json` | 咨询议题选项 |
| `assets/avatars/` | 咨询师头像图片 |
**部署前务必修改** `config/app.json` 中的 `accessToken` 为随机长字符串。
## 二维码访问
1. 修改 `accessToken` 后访问 `qr.html`
2. 扫描生成的二维码或分发链接(含 `?access=token`
3. 用户首次访问校验通过后,同浏览器 session 内可继续访问
> 说明:若用户复制完整链接仍可访问。如需更高安全性,可定期更换 token 并重新制码。
## 生产部署
### Apache
- 站点根目录指向本项目
- 确保启用 `mod_authz_core``.htaccess` 会禁止直接下载 `data/submissions.json`
### Nginx
```nginx
location ~ /data/submissions\.json$ {
deny all;
}
```
确保 PHP-FPM 正常处理 `.php` 文件,`data/` 目录对 PHP 进程可写。
### 提交无反应 / 提交失败排查
API **不会**写死 localhost地址随当前访问域名自动计算。若点击提交无反应按下面检查
1. **浏览器直接访问** `https://你的域名/api/config.php`
- 应返回 JSON若 404 → `api/` 目录未上传或站点根目录不对
- 若下载文件 / 显示源码 → PHP 未启用,在宝塔里给站点选 PHP 版本
2. **`data/` 目录可写**(宝塔 → 文件 → 权限设为 755 或 775属主 `www`
- 不可写时提交会提示「保存失败」
3. **重新上传** 最新的 `js/api.js``js/consult.js`(旧版若初始化报错会导致提交按钮未绑定)
4. **F12 开发者工具 → Network**,点提交看 `submit.php` 的请求 URL 是否为当前域名下的 `/api/submit.php`
5. 须先通过二维码进入(或 URL 带 `?access=token`),否则会被准入拦截
### 调试页面
部署后若提交异常,可访问(**须带与二维码相同的 access 令牌**
```
https://你的域名/debug.html?access=你的accessToken
```
功能环境检测、data 目录写权限、测试提交、测试邮件发送,并在页面底部输出详细日志。
**提交成功但页面无反应**:通常是发邮件耗时过长导致超时。现已改为「先返回成功、再后台发邮件」,请重新上传 `api/submit.php``api/mailer.php``js/api.js``js/consult.js`
| 接口 | 方法 | 说明 |
|------|------|------|
| `api/config.php` | GET | 公开配置 |
| `api/doctors.php` | GET | 医生列表 |
| `api/topics.php` | GET | 议题列表 |
| `api/submit.php` | POST | 提交咨询 |
| `api/login.php` | POST | 管理登录 |
| `api/logout.php` | POST | 管理退出 |
| `api/check.php` | GET | 检查登录状态 |
| `api/submissions.php` | GET | 提交列表(需登录) |
| `api/export.php` | GET | 导出 `?format=csv\|json`(需登录) |
## 目录结构
```
心理咨询/
├── index.html # 首页
├── consult.html # 预约表单
├── admin.html # 管理后台
├── qr.html # 二维码生成
├── api/ # PHP 接口
├── config/ # 系统配置
├── data/ # 业务数据
├── assets/ # 静态资源
├── css/ # 样式
└── js/ # 脚本
```