PHP+SQLite系统通用开发规范



一、安装与数据库运维

1.初始安装机制:首次部署时访问 install.php 页面,输入用户名和密码即可创建初始管理员账号;安装流程内部自动调用 checkdb.php 执行数据库结构初始化,数据库文件不存在时可自动创建;当数据库中已存在管理员账号时,再次访问该页面将自动跳转至登录页,禁止重复初始化。
2.数据库结构升级:提供 checkdb.php 升级文件,执行后自动将数据库结构更新至最新版本,完整保留原有业务数据;采用幂等设计,已存在的表与字段自动跳过;所有结构变更操作统一纳入同一个事务中执行,升级失败自动完整回滚。后续代码迭代仅通过手动运行该文件同步数据库结构,业务代码不再对表结构做冗余判断。
文件名前缀 # 为系统保护命名:服务器端内部文件调用不受影响,可正常执行;浏览器无法通过URL直接访问,手动运行时可临时修改文件名。
3.时区统一约定:所有时间字段存储、页面展示、日志记录均统一使用北京时间。
4.索引优化约定:对高频查询字段、外键关联字段统一建立索引,索引结构随 checkdb.php 同步维护。
5.外键约束校验:删除存在外键关联的数据记录前,自动校验数据引用关系,被其他业务数据引用的记录禁止删除。
6.数据库自动备份:SQLite 数据库在每天首次被访问时自动触发完整备份,采用 VACUUM INTO 命令生成一致性备份文件;备份过程增加文件锁机制,避免并发备份导致文件损坏;备份文件以日期标识命名,默认保留最近3天,自动清理超出保留周期的历史备份;备份保留天数支持在系统配置表中自定义设置。

二、账号与权限安全

1.密码强度规则:账号密码需由大小写字母、数字、特殊字符组成,且必须包含至少3种字符类型,长度不小于8位。
2.密码加密存储:用户密码统一使用 password_hash 函数进行单向加密存储。
3.登录失败提示:登录验证失败时统一返回「账号或密码错误」模糊提示,不区分账号不存在与密码错误场景,防止账号枚举。
4.登录错误锁定:同一账号连续密码输入错误达到阈值后自动锁定账号,锁定时长可配置。
5.单设备登录限制:同一账号仅允许单设备同时登录,新设备登录成功后,其他已登录设备的会话自动失效并强制退出。
6.密码修改校验:用户修改自身密码时,必须验证旧密码,并两次输入确认新密码。
7.用户名只读限制:用户名一经创建不可修改,个人资料编辑页中用户名置灰为只读状态。
8.管理员自保限制:超级管理员账号无法删除自身账号。
9.会话超时机制:登录会话支持闲置超时自动退出,超时时长在系统配置表中配置;超时后自动销毁会话并跳转至登录页。
10.接口权限校验:所有后端业务接口必须做服务端权限校验,权限校验不通过直接拦截,禁止仅通过前端隐藏控件控制权限,防止越权访问。
11.CSRF防护:所有表单提交、关键操作接口均加入CSRF令牌校验,防范跨站请求伪造攻击。
12.注入与XSS防护:全局对用户输入数据做合法性过滤与输出转义处理;数据库操作统一使用预处理语句,杜绝SQL字符串拼接,从底层规避SQL注入风险。
13.响应头安全加固:在PHP入口统一设置安全响应头,作为Nginx配置的替代或补充:X-Frame-Options: SAMEORIGIN、X-Content-Type-Options: nosniff、Referrer-Policy: strict-origin-when-cross-origin、X-XSS-Protection: 1; mode=block。
14.Session Cookie安全配置:会话Cookie统一启用 HttpOnly、Secure、SameSite=Strict 属性,防止Cookie被脚本窃取或跨站携带。
15.RBAC权限控制(可选规范,按需启用):基于RBAC角色权限模型构建权限体系,支持角色创建、菜单权限与操作权限分配;账号按所属角色继承权限,登录后动态渲染导航菜单、控制页面操作按钮显隐,所有业务操作均受权限管控。

三、全局前端布局规范

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

四、登录页专项规范

1.验证码基础要求:登录页必须接入图形验证码,适当放大验证码字体,保证清晰易识别。
2.验证码失效机制:验证码支持点击刷新,单次验证通过后立即失效,禁止重复使用同一张验证码进行多次提交。
3.记住登录状态:登录页提供「记住登录状态」勾选选项,勾选后采用selector/validator令牌机制实现长效登录态,替代本地密码存储,保障账号安全。
4.版权标识:登录页底部居中展示版权与备案信息,格式为:©年份 系统名称 备案号;备案号支持在系统配置表中配置。

五、列表与分页规范

1.单页CURD操作:同类型业务的增删改查操作在同一页面内完成,全程无页面刷新。
2.列自定义配置:所有列表页支持列显示配置,可自由控制各列的显示/隐藏(包含操作列),配置信息保存在浏览器本地存储;支持一键重置为默认列配置。
3.操作列适配规则:PC端列表默认显示操作列,移动端列表默认隐藏操作列。
4.行详情交互:点击列表行可查看数据详情;拥有对应编辑权限的账号,可在详情页直接跳转至编辑页面。
5.分页样式规范
- PC端:左侧显示「第A/B页(共C条)」,搭配每页条数下拉选择器;右侧提供首页、上一页、下一页、末页按钮,以及跳转到指定页的下拉框。
- 移动端:左侧显示「第A/B页(共C条)」,右侧仅保留上一页、下一页按钮。
6.默认排序:所有列表页统一按主键ID倒序排列。

六、表单与交互体验

1.输入框增强功能:所有文本输入框支持双击清空内容;所有搜索类输入框支持回车键触发搜索;移动端搜索输入框自动唤起搜索型键盘,键盘仅显示搜索按钮,不显示下一步等其他按钮,点击搜索按钮直接执行搜索。
2.表单双重校验:所有表单采用前端实时格式校验+后端二次合法性校验的双重校验机制,错误提示精准定位至对应字段。
3.加载与防重复提交:所有异步操作触发时显示加载状态,提交过程中禁用对应操作按钮,防止重复提交产生脏数据。
4.全局消息提示:所有操作成功、失败的提示消息统一在页面中央展示,设定时长后自动消失。

七、系统配置与日志

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

评论: 0 | 引用: 0 | 查看次数: 13
发表评论
登录后再发表评论!