木子屋 Dnawo's BLOG

PHP+SQLite系统通用开发规范

👤 dnawo 📅 2026-09-13 👁 79 👍 1 💬 0 🔄 本站原创
图片

一、安装与数据库运维

1.1 初始安装机制:首次部署访问 install.php 创建管理员账号,内部自动调用 checkdb.php 初始化数据库,数据库文件不存在时可自动创建;已存在管理员账号则自动跳转登录页,禁止重复初始化。
1.2 数据库结构升级:提供 checkdb.php 幂等升级页面,已存在的表与字段自动跳过,完整保留原有业务数据;所有结构变更事务化执行,失败自动回滚;后续仅手动运行升级,业务代码不做冗余判断。
1.3 时区统一约定:所有时间存储、展示、日志均统一使用北京时间。
1.4 索引优化约定:高频查询字段、外键关联字段统一建立索引,随升级脚本同步维护。
1.5 外键约束校验:删除关联数据前自动校验引用关系,被引用记录禁止删除。
1.6 数据库自动备份:SQLite 每日首次访问自动备份,采用 VACUUM INTO 命令生成一致性备份,加文件锁防并发损坏;备份文件以日期命名,默认保留最近 3 天并自动清理超期备份,保留天数可配置。

二、账号与权限安全

2.1 密码强度规则:大小写字母、数字、特殊字符至少包含 3 种,长度 ≥ 8 位。
2.2 密码加密存储:统一使用 password_hash 进行单向加密存储。
2.3 登录失败提示:统一返回「账号或密码错误」模糊提示,防止账号枚举。
2.4 登录错误锁定:连续密码错误达到阈值自动锁定账号,锁定时长可配置。
2.5 单设备登录限制:同一账号仅允许单设备同时登录,新设备登录后其他设备自动退出。
2.6 密码修改校验:用户修改自身密码时,需验证旧密码,两次输入确认新密码。
2.7 用户名只读限制:创建后不可修改,编辑页置灰显示。
2.8 管理员自保限制:超级管理员账号不能删除自身。
2.9 会话超时机制:登录会话闲置超时后自动销毁并跳转至登录页,超时时长可配置。
2.10 接口权限校验:所有后端接口服务端权限校验,防止越权访问。
2.11 CSRF 防护:表单提交与关键操作加入 CSRF 令牌校验,防范跨站请求伪造攻击。
2.12 注入与 XSS 防护:全局输入过滤输出转义,数据库使用预处理语句。
2.13 响应头安全加固:统一设置安全响应头,作为 Nginx 配置的替代或补充。
2.14 Session Cookie 安全配置:启用 HttpOnly、Secure、SameSite=Strict 属性。
2.15 RBAC 权限控制(可选启用,启用后为必选要求):基于角色权限模型,支持角色创建、菜单与操作权限分配,动态渲染菜单与控制操作权限。

三、全局前端布局规范

3.1 响应式适配:所有页面完整适配 PC 端与移动端显示。
3.2 后台主框架:左右分栏布局,左侧可折叠导航菜单,左上角展示系统名称 + 版本号(版本信息统一配置于 config.php),名称下方小字号展示品牌标语(slogan,允许为空);左下角展示登录账号信息及「修改密码」「退出登录」入口;右上角展示当前登录用户名及明暗主题切换按钮。

四、登录页专项规范

4.1 验证码基础要求:图形验证码,字体放大保证清晰易识别。
4.2 验证码失效机制:支持点击刷新,验证后立即失效。
4.3 记住登录状态:采用 selector/validator 令牌机制实现长效登录,本地不存储密码。
4.4 版权标识:底部居中显示 ©年份 系统名称 备案号,备案号可在系统配置表中配置。

五、列表与分页规范

5.1 单页 CURD 操作:同业务增删改查在同一页面完成,全程无刷新。
5.2 列自定义配置:各业务列表的列支持列显隐控制,配置保存在本地,支持一键重置。
5.3 操作列适配:PC 端默认显示操作列,移动端默认隐藏。
5.4 行详情交互:点击列表行查看详情,有权限可直接跳转编辑。
5.5 分页样式规范:
- PC端:左侧显示「第A/B页(共C条)」,搭配每页条数下拉选择器(选择后需本地记忆);右侧提供首页、上一页、下一页、末页按钮,以及跳转到指定页的下拉框。
- 移动端:左侧显示「第A/B页(共C条)」,右侧仅保留上一页、下一页按钮。
5.6 默认排序:所有列表统一按主键 ID 倒序排列。

六、表单与交互体验

6.1 输入框增强:所有输入框支持双击清空内容,所有搜索输入框支持回车触发搜索;移动端搜索输入框键盘显示搜索按钮,不要显示下一步按钮。
6.2 表单双重校验:前端实时校验 + 后端二次合法性校验。
6.3 加载与防重复提交:异步操作显示加载状态,禁用按钮防重复提交。
6.4 全局消息提示:无需用户确认的提示(成功、失败、状态反馈)用页面中央的 Toast,几秒后自动消失;需要用户确认的破坏性操作(删除、重置等)用页面中央的模态确认窗口;需要输入内容用模态输入窗口。全项目禁用原生 alert/confirm/prompt,所有提示居中显示。

七、系统配置与日志

7.1 数据库路径配置:数据库文件存储路径(含文件名)统一在 config.php 中配置(默认值:/data/webdb.sqlite),不存放到系统配置表,避免程序初始运行时无法定位数据库。
7.2 系统配置表:核心运行参数统一管理(数据库路径除外),提供单一编辑页面,无需新增删除功能:
- 系统名称:默认为空
- 品牌标语(slogan):默认为空
- 网站备案号:默认为空
- 密码错误次数阈值:默认3次
- 账号锁定时长:默认24小时
- 会话超时时长:默认30分钟
- 上传文件路径:默认 /uploads
- 日志存储路径:默认 /logs
- 备份文件保留天数:默认3天
7.3 异常处理与日志(可选启用,启用后为必选要求):全局异常捕获机制,异常日志按天生成文件存储。
7.4 操作审计日志(可选启用,启用后为必选要求):记录账号登录、数据增删改、权限变更等关键操作,包含操作人、操作时间、操作内容、客户端IP信息,支持操作追溯与安全审计;审计日志仅提供列表查看与搜索功能,无需新增、删除功能。

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 地址解析接口设计:从原始输入到结构化输出 下一篇 → 移动设备填写表单时输入法只有下一步没有"回车"键解决办法