软件测试 发表于 2026-9-7 17:33:00

家庭就诊记录管理系统

============================================================

  家庭就诊记录系统 - 部署与使用说明

  纯 PHP + SQLite,无需数据库服务器,可直接上传到 PHP 虚拟空间

============================================================

【一、目录结构】

  jzjl/

  ├── index.php              系统入口(未登录显示产品介绍页,已登录直达看板)

  ├── reset_pwd.php          【临时】忘记密码重置工具(用完自动删除)

  ├── robots.txt             禁止搜索引擎收录(保护隐私)

  ├── README.txt             本说明

  ├── app/                   核心程序库(不要直接访问)

  │   ├── config.php         全局配置(路径、安全参数、上传限制)

  │   ├── db.php             SQLite 连接 + 自动建表(13 张表)

  │   ├── functions.php      公共函数(安全输出、CSRF、文件上传、网站设置等)

  │   └── auth.php           登录认证、会话、失败锁定

  ├── pages/                 所有业务页面

  │   ├── login.php          登录(用户名+密码+图形验证码)

  │   ├── init.php           首次使用创建管理员

  │   ├── logout.php         退出

  │   ├── dashboard.php      首页看板(统计+复查提醒)

  │   ├── members.php        家庭成员列表(姓名前显示 ID)

  │   ├── member_form.php    成员增改(含过敏史/既往病史)

  │   ├── member_view.php    成员详情

  │   ├── records.php        就诊记录列表+检索

  │   ├── record_form.php    就诊记录增改(检查项+用药+处方+病历)

  │   ├── record_view.php    就诊记录详情+分享管理

  │   ├── exams.php          体检报告列表

  │   ├── exam_form.php      体检报告上传

  │   ├── exam_view.php      体检报告详情

  │   ├── drugs.php          药品库

  │   ├── shares.php         分享链接管理(完整链接+密码+编辑)

  │   ├── share_edit.php     编辑分享链接(有效期/密码)

  │   ├── logs.php           操作日志

  │   ├── settings.php       系统设置(改密+网站设置+备份恢复)

  │   ├── backup.php         数据库备份/恢复

  │   ├── export_csv.php     导出 CSV(Excel 可直接打开)

  │   ├── print_view.php     打印友好页(可另存为 PDF)

  │   ├── share.php          公开分享页(无需登录)

  │   └── captcha.php        图形验证码

  ├── includes/              公共布局

  │   ├── header.php         顶部导航

  │   └── footer.php         底部

  ├── assets/

  │   ├── css/style.css      样式

  │   └── js/app.js          交互脚本

  ├── data/                  SQLite 数据库(禁止外部访问)

  ├── uploads/               上传文件(禁止执行脚本)

  └── backups/               数据库备份(禁止外部访问)

【二、本地运行(PHPStudy)】

  1. 把 jzjl 文件夹放在 PHPStudy 的 WWW 目录下(如 D:\phpstudy_pro\WWW\jzjl)

  2. 启动 PHPStudy 的 Apache 或 Nginx,PHP 版本选 7.4 或更高

  3. 浏览器访问 http://localhost/jzjl/

  4. 首次访问自动进入"创建管理员"页面,设置用户名和密码即可使用

  5. 确保 PHP 开启了 pdo_sqlite、gd、mbstring、fileinfo 扩展

【三、上传到 PHP 虚拟空间(公网部署)】

  1. 用 FTP 把 jzjl 文件夹里的【所有文件和文件夹】上传到空间根目录

     (保持目录结构不变,app/ pages/ assets/ includes/ data/ uploads/ backups/ 都要传)

  2. 确保以下目录可写(权限 755 或 775):data/、uploads/、backups/

  3. 空间需支持:PHP 7.4+、pdo_sqlite 扩展、gd 扩展(验证码用)

  4. 浏览器访问你的域名,首次进入创建管理员页面

  5. 如果空间用 Nginx(不支持 .htaccess),请在 Nginx 配置中加:

       location ~* /(data|backups)/ { deny all; }

       location ~* /uploads/.*\.(php|phtml|phar)$ { deny all; }

       location = /robots.txt { allow all; }

【四、安全说明(公网部署必读)】

  本系统已做以下安全防护,部署到公网前请确认:

  1. 密码加密:所有密码使用 bcrypt 哈希存储,数据库泄露也无法还原

  3. CSRF 防护:所有表单提交带令牌,防止跨站请求伪造

  4. XSS 防护:所有用户输入输出时 HTML 转义

  5. SQL 注入:全部使用 PDO 预处理语句

  6. 会话安全:Cookie HttpOnly + SameSite + 会话严格模式(防会话固定),

     HTTPS 时自动 Secure,2 小时空闲超时

  7. 上传安全:

     - 仅允许 jpg/jpeg/png/gif/webp/pdf,单文件最大 10MB

     - 双重校验:MIME 类型 + 文件真实内容(图片用 getimagesize,PDF 检查文件头)

     - 文件名按类型命名(检查单 jcd-01、处方 cf-01、病历 bl-01),按"成员ID/日期"归类

     - uploads/ 目录禁止执行 PHP 等脚本(.htaccess)

  8. 数据目录保护:data/ 和 backups/ 禁止外部直接访问(.htaccess)

  9. 分享隐私:分享页姓名自动脱敏(如"张*丰"),可设访问密码和有效期,可手动撤销

  10. 操作审计:登录、查看、修改、删除、分享、导出、备份均记录日志

  11. 搜索引擎:robots.txt 禁止收录,家人信息不会被搜索到

  12. 错误隐藏:生产环境关闭 PHP 错误显示,防止泄露服务器路径

  13. 安全响应头:X-Frame-Options、X-Content-Type-Options、Referrer-Policy、

      并隐藏 PHP 版本信息(X-Powered-By)

  14. 主题白名单:界面风格仅允许 4 种预设值,防止注入任意样式

  额外建议:

  - 务必使用 HTTPS(SSL 证书),让 Cookie 传输加密

  - 定期在"系统设置"里下载数据库备份

  - 管理员密码不要用弱密码,建议 8 位以上含字母数字

  - 分享链接用完及时撤销,不要长期挂着

  - 部署到公网前:改掉 reset_pwd.php 里的默认口令并确保该文件已删除

【五、功能一览】

  ✓ 家庭成员管理(姓名/性别/出生日期/关系/过敏史/既往病史)

  ✓ 就诊记录(就诊时间/医院/科室/医生/诊断/治疗方案/复查日期)

  ✓ 检查项目(可多项,每项含结果 + 检查单文件上传)

  ✓ 用药(可多种,药名/用法用量/频次/疗程,可从药品库选择)

  ✓ 处方上传、病历上传(可多张图片,缩略图展示)

  ✓ 体检报告独立上传(关联成员,多文件)

  ✓ 检索:按姓名+时间范围 / 按科室

  ✓ 分享链接:有效期+访问密码+可撤销+可编辑,姓名脱敏,一键复制链接+密码

  ✓ 复查提醒(首页高亮 7 天内到期和已过期)

  ✓ 数据导出 CSV(Excel 打开不乱码)

  ✓ 打印 / 另存为 PDF

  ✓ 药品库维护

  ✓ 统计看板(就诊次数、科室分布、月度趋势、高频诊断)

  ✓ 操作日志审计

  ✓ 数据库一键备份下载 + 上传恢复(恢复前自动保留当前库)

  ✓ 登录失败锁定

  ✓ 网站设置:标题、版权信息、ICP 备案号后台直接修改

  ✓ 界面风格:默认青绿 / 清新蓝 / 温暖橙 / 夜间深色 / 优雅紫 / 樱花粉 / 森林绿 / 典雅灰,8 套主题可选

  ✓ 首页介绍页:未登录时展示系统功能与部署说明,方便对外推广、吸引家人或朋友部署使用

【六、常见问题】

  Q: 上传文件时提示"超过大小限制"?

  A: 编辑 php.ini,把 upload_max_filesize 和 post_max_size 都改成 20M 或更大,重启 PHP。

  Q: 忘记管理员密码怎么办?

  A: 项目里已附带一个「密码重置工具」reset_pwd.php(默认口令 jzjl2026):

     1. 把 reset_pwd.php 上传到网站根目录(和 index.php 同目录)

     2. 浏览器访问  你的域名/reset_pwd.php

     3. 输入重置口令 + 新密码,点重置

     4. 重置成功后文件自动删除,请再用 FTP 确认一遍

     注意:部署到公网前请先改掉文件里的 $RESET_KEY 口令;

           此工具是临时用的,用完必须确保已删除。

     备用方法:用 DB Browser for SQLite 打开 data/medical.db,

     清空 users 表后重新访问网站初始化(保留其他数据)。

  Q: 虚拟空间不支持 SQLite?

  A: 绝大多数 PHP 空间都支持 pdo_sqlite。如果确实不支持,联系空间商开启,

     或换一个支持 SQLite 的空间(本系统不依赖 MySQL)。

  Q: PDF 导出在哪里?

  A: 在就诊记录详情页点"打印 / PDF",在浏览器打印对话框中选"另存为 PDF"。

     这样不需要安装任何 PHP 库,兼容性最好。

通过网盘分享的文件:家庭就诊记录

链接: https://pan.baidu.com/s/12p00aGAdVkzxU-5If2YLrg 提取码: 52pj

--来自百度网盘超级会员v9的分享

隔壁老王煮酒 发表于 2026-9-9 12:57:01

观点有依据,不是拍脑袋得出来的。想请教下有没有推荐的上手路径?

南山 发表于 2026-9-9 19:09:12

内容挺扎实的,不是那种拼凑出来的。

言默说事 发表于 2026-9-10 02:56:30

楼主说得挺实在,比那些空谈概念的强。想请教下有没有推荐的上手路径?

流浪随笔 发表于 2026-9-10 08:19:03

这几条经验很实用,尤其是最后那点。

微光柚子 发表于 2026-9-10 15:04:19

感谢整理,这类总结省了别人很多时间。希望能再展开讲讲某个细节。

听风98 发表于 2026-9-10 19:57:55

这个案例很有代表性,能说明不少问题。

晚风随笔 发表于 2026-9-11 04:10:01

感谢整理,这类总结省了别人很多时间。

有点困慢半拍 发表于 2026-9-11 09:49:07

思路很清晰,逻辑上也能自洽。

南山记事 发表于 2026-9-11 14:17:55

这个话题最近讨论得挺多,但像这样讲清楚的少。有遇到类似情况的吗?想听听别人的做法。
页: [1] 2 3 4
查看完整版本: 家庭就诊记录管理系统