1234下一页
查看: 590|回复: 31

[IOS] 家庭就诊记录管理系统

[复制链接]

545

主题

0

回帖

906

积分

UID
4
贡献
9 点
钻石
99 个
C币
8 个
发表于 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的分享
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

0

主题

376

回帖

0

积分

UID
485586
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-9 12:57:01 | 显示全部楼层
观点有依据,不是拍脑袋得出来的。想请教下有没有推荐的上手路径?
回复

使用道具 举报

0

主题

387

回帖

50

积分

UID
767379
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-9 19:09:12 | 显示全部楼层
内容挺扎实的,不是那种拼凑出来的。
回复

使用道具 举报

0

主题

378

回帖

378

积分

UID
942185
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-10 02:56:30 | 显示全部楼层
楼主说得挺实在,比那些空谈概念的强。想请教下有没有推荐的上手路径?
回复

使用道具 举报

0

主题

372

回帖

372

积分

UID
127378
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-10 08:19:03 | 显示全部楼层
这几条经验很实用,尤其是最后那点。
回复

使用道具 举报

0

主题

368

回帖

368

积分

UID
801652
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-10 15:04:19 | 显示全部楼层
感谢整理,这类总结省了别人很多时间。希望能再展开讲讲某个细节。
回复

使用道具 举报

0

主题

383

回帖

0

积分

UID
354622
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-10 19:57:55 | 显示全部楼层
这个案例很有代表性,能说明不少问题。
回复

使用道具 举报

0

主题

382

回帖

46

积分

UID
798830
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-11 04:10:01 | 显示全部楼层
感谢整理,这类总结省了别人很多时间。
回复

使用道具 举报

0

主题

370

回帖

34

积分

UID
174608
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-11 09:49:07 | 显示全部楼层
思路很清晰,逻辑上也能自洽。
回复

使用道具 举报

0

主题

361

回帖

38

积分

UID
812017
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-11 14:17:55 | 显示全部楼层
这个话题最近讨论得挺多,但像这样讲清楚的少。有遇到类似情况的吗?想听听别人的做法。
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
1234下一页
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部