# 心理咨询 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/ # 脚本 ```