序言
给电脑120写的基于php的维修登记系统于2022/1/12完成,但是毫无安全系数可言,于是改用了tp框架.2022/1/23日下午两点起床后便开始撸代码,到晚上发小喝酒,本来因为在全心写代码说好不去的,但是发小们挨个打电话,心里有点过不去,就去了,到了晚上11点回到家,继续淦起了我的代码,tp也是最近刚看完,不熟悉,过程很慢而且bug频出,但越写越来劲,直到天亮。
早上6点爸妈起床,看见我还在“玩电脑”,狠“骂”一通,让我赶紧去睡觉,但我没怂,继续淦我的代码,7点左右基本代码淦完了,我妈问我吃早饭不,我顺便吃了在假期内第一顿早饭(挂面加三个鸡蛋),属实有点多,但是吃的只剩下渣渣。到了8点多,维修登记查询系统雏形完成,看看成品吧。
成品
维修登记系统
维修信息查询系统
查询结果
未完成
- 维修信息查询登录(√)
- 维修现场图片上传(√)
- 上传限制(√)
- 漏洞扫描(√)
- 数据可视化(√)
续文
不说了,睡了睡了
2022/2/2日更新
- 对用户提交的数据做了前后端以及数据库的限制,防止出现注入
- 对维修人员栏做了限制,提交的维修人必须是内部成员,提交数据时以空格隔开
- 数据查询模块添加了维修图片查看功能
- 对提交的非法数据前后端都做出提示,提交数据格式正确才能存入数据库
- 增加了内部成员维修次数统计
- 数据库添加了图片存在本地的路径,方便对提交的无效图片进行清理
- 添加了登记用户IP和UA登记。
- 添加了对提交内容的处理,htmlspecialchars处理html字符,防止出现注入
- 添加了上传图片预览功能
成品
数据查询添加图片查看功能
2022/2/3日更新
登录界面
- 修改了js添加默认时间逻辑,添加了维修时间选择模块,支持默认填充当前时间
- 添加了维修类型,值班室维修、上门维修,将电脑问题改为15个字
- 之前的判断图片是否上传的逻辑错误,点击上传图片后即使不上传也不会提示错误,今日将上传图片限制改为从后端检测,另外修改了点击重置,上传图片不会重置问题。
- 修改了成员维修次数统计功能,改为上门维修和值班室维修
- 修改了维修人员栏提交内容限制,提交的维修人员必须是内部成员,并且单次不能提交重复的成员
管理界面
- 修改了后台登录页面,看起来更加高大尚
- 添加了用户设置权限功能,不同权限的用户登录后所拥有的功能不同
- 增加了成员维修次数查询、删除维修登记表数据、添加电脑120成员、删除电脑120成员、添加系统用户、删除系统用户功能,增加了防止重复添加、删除不存在用户的限制,并且通过js将按钮文字修改为查询类别所相关信息
- 处理了后台模块提交查询内容为空的情况
相关图片
登记页面
后台登录页面
管理界面
维修次数查询
2022/2/5日更新
- 修复了维修时间选择模块,点击输入框取消手机输入法弹出bug
2022/2/8日更新
修复了点击表单页面会变大的bug
2022/2/17日更新
数据可视化模块
- 添加了总维修次数,各类型电脑问题维修次数展示
- 添加了个人维修排行榜(前十)
- 添加了上门维修次数排行榜(前十)
2022/2/17日更新
登记页面
修复了图片上传模块预览显示的bug(点击上传,如果不上传会出现空白)
数据可视化模块
- 增加了数据实时显示
- 增加了当前年份个月维修次数
- 增加了电脑问题类型占比(饼状图)
2022/2/19日更新
管理界面
修复了总维修表查看图片预览栏报错(允许的内存大小 268435456 字节用尽(尝试分配 22319104 字节)),方式为修改php.ini
文件内memory_limit
,将其大小设置为更大
2022/2/21日更新
登记页面
- 添加了问题类型选择模块,选择其他之后电脑问题填写模块显示出来
- 修复了重复提交的bug
数据可视化模块
- 修改了问题类型查询字段,改为提交的问题类型查询
- 将正式成员和学习小组成员分别展示维修次数和上门维修次数
2022/3/1日更新
登记页面
- 表单提交方式改为POST提交
- 修复了登记页面csrf、xss、get提交乱码漏洞
- 上传图片模块改为异步上传,添加了上传限制条件,必须先填写正确的维修人才可以上传成功
- 维修类型模块将结果上传到数据库,为admin模块提供方法
管理界面
- 后台大幅度更新,采用layuimini模板,使后台可视化更加清晰
- 后台设计了维修登记表、维修次数表、成员管理、用户管理、系统更新日志并附带嵌套了登记页面和数据展示页面
- 维修登记表、维修次数表、内部成员管理、系统用户管理做了数据添加和修改功能
- 维修登记表、系统用户管理、内部成员管理做了多选删除和删除功能,维修次数表不给予删除功能,维修登记表删除时对应维修人维修次数也会对应减少
- 维修登记表、维修次数表、内部成员管理、系统用户管理添加了搜索功能,支持模糊查询及单条件查询
- 编辑模块做了给子页面传值
2022/3/4日更新
管理界面
- 后台登录页面修改了背景图的css,使得背景图在电脑端和手机端都可以铺满全屏
- 添加了数据表格分页功能
- 添加了用户权限功能,不同用户所拥有的功能不同
- 添加了session,对接口调用用户进行登录检查以及权限审核,只有用户对以及权限对才可以进行接口内操作
- 修改了图标样式
- 首页右上角添加了
用户:欢迎您!
欢迎语 - 添加了用户退出功能,退出后清空session
- 限制了用户修改密码权限,只可以修改当前用户密码
- 后台登录页面进行限制,必须填账号密码,账号密码错误返回提示
- 对添加系统用户模块提交内容进行验证,账号必须包含数字和字母且长度大于6,密码为强密码,必须包含字母大小写并且长度大于8,可以包含特殊字符
- 添加了添加内部成员限制,不能重复添加
2022/3/5日更新
登记页面
- 对必填项做了空值精确提示
- 对提交成功的用户设置一个直达电脑120官网的按钮
- 设置了表单必填项提示
*
- 修改了后端判断逻辑,精确到每个问题,并返回错误原因
2022/3/7日更新
登记页面
- 对每个接口的条件判断进行了优化,从之前的从数据库查询改为判断
session('login_user')
是否存在,对于维修数据表接口、维修次数表接口、电脑120内部成员表接口、系统用户表接口只判断session('login_user')
,对于add
和edit
类接口判断session('login_user')+session('permissions')
,判断session是否存在,并且是否是管理员权限,非管理员权限的用户无权限使用该接口,未登录用户直接提示未登录。 - 对上传图片模块做了优化,原来上传到服务器是以时间为文件夹名,剩下的md5码为文件名进行存储,现在改为统一的目录下存储,防止有人用同一图片刷内存。
- 上传图片成功后js将上传图片按钮禁用,重置后可再上传。
- 图片改为居中预览
- 修改了按钮颜色
管理界面
- 添加了验证码验证功能,防止恶意攻击
- 修改欢迎语,后台对用户type进行判断,老师则显示
xx老师,欢迎您!
电脑120成员则显示xx同学,欢迎您!
- 修复了系统公告点击,再点击查看跳转到其他网页bug
数据可视化
- 排行榜展示为整数
2022/3/09日更新
登记模块
- 修改了按钮颜色
- 修改了移动端适配效果
- 修改了上传图片模块,必须先填写维修人,维修人填写正确即可上传图片,否则禁用上传按钮
- 修复了修改上传图片模块带来的
Application error message
漏洞
管理界面
- 修改了上传图片文件名,改为加密后的文件名
- 隐藏了用户密码
- 修复了用户登录界面小眼睛显示或隐藏密码bug
2022/3/11日更新
管理界面
- 修改了数据库存储密码的格式,改为md5之后的密码存入,防止偷取数据库表干坏事
- 添加了维修次数找回功能,防止恶意删除数据后不能很好恢复维修次数数据
2022/3/12日更新
登记界面
- 维修时间限制只能是当前已过去的时间
- 增加了夜间模式
- 增加了追随系统配色,深色和浅色
管理界面
- 用户的添加、编辑和用户自己修改密码都改成将前端的密码经过md5之后再传入后端
- 修复了非管理员却可以看到首页系统用户管理
- 数据修改、添加在前端增加了格式的验证
- 修复了
thinkphp5 Array and string offset access syntax with curly braces is deprecated
,tp5使用的php版本不能太高,php7.4不支持大括号,找到thinkphp\library\think\db\Query.php
文件
将这里的大括号改为 []。当然还是推荐使用较低版本的php
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0
解决方法:在php.ini里将always_populate_raw_post_data=-1隐藏warning,打开php.ini 开启 always_populate_raw_post_data = 1 重启php- 修复了内容搜索bug,点击搜索会出现高延迟现象,解决方法为将判断请求方式由是否是post改为是否为ajax,加快搜索效率
- 对维修总表时间修改模块做出限制,只能选择过去时
- 成员届数由个人输入改为选择
数据可视化界面
- 添加了维修次数模块手机端适配
2022/3/13日更新
登记界面
- 修改了整体的颜色搭配、增加了圆角
- 修改了input边框样式
- 解决了手机端时间选择滑块不能滑动问题
后台管理
- 修改了log页面margin
数据可视化
- 对其他电脑端可视化模块都添加了移动端适配
2022/3/17日更新
登记界面
- 对上传成功的图片文件名存到session,与提交的表单一一对应,替换了之前文件名传到前端再传回来的方式,更加安全
- 维修人模块去除维修人填写错误提示信息,填对方可上传图片
- input 限制了填写的最大长度
- 添加了token验证,防止恶意程序提交
- 上传的图片存储到public目录,并对上传的文件重新命名,接收的文件名加随机参数再进行MD5作为最后存储的文件名,防止恶意扫描图片
- 修改了进度天出现时间,只有上传开始后才显示进度条
- 解决了tp5默认函数接收不到post参数问题
后台管理
- 添加了维修图片查看功能,点击文件名即可查看图片
2022/3/18日更新
登记界面
- 修复了选择电脑问题类型为其他输入电脑问题,再选择其他问题是电脑问题不能清零漏洞
2022/3/19日更新
登记界面
- 修复了多次填写维修人,只要第一次正确,之后随便填都可以上传图片的漏洞
- 修复了维修人不在数据库中却可以上传图片的漏洞
2022/3/23日更新
登记界面
- 修改了手机号输入模块内容,只填写数字
- 做了ipad适配
后台管理
- 修改了搜索及编辑框输入字符个数的限制
2022/3/24日更新
后台管理
- 修改验证码逻辑,账号密码错误2次以后需要填写验证码
2022/3/27日更新
登记界面
- 对夜间模式色彩搭配做了调整
- 限制了维修时间选择,不能选择超过当前时间
后台管理
- 去除了提示按钮
- 修改了默认导出文件名,改为当前栏目名
- 维修图片自适应大小
- 去除了首页系统功能
- 去除了加载动画
- 添加了维修次数表点击次数出现维修表相关数据功能
2022/3/28日更新
后台管理
- 将表格及搜索框head文字统一
- 添加了点击电话号拨号功能
- 对弹出层和表格大小做了一定程度自适应屏幕大小
- 对表格样式做了美化
2022/3/29日更新
后台管理
- 对编辑页面select不能默认选择父页面传过来的值做出修复
2022/3/30日更新
登记界面
- 提交成功后对保存的文件名session进行清除,防止下次提交出现未提交而出现文件名
2022/3/31日更新
登记界面
数据可视化
1. 增加了日志编写自动发布功能
2. 对搜索框内容进行优化l
3. 将管理员从后台隐藏
4. 修改了维修表编辑页面“其他”选项弹出电脑问题bug
2022/4/2日更新
后台管理模块
- 优化了路由
小序
最近忙着给系统完善功能暂时没时间做更新,之后将会补充上