- 博客(11)
- 收藏
- 关注
原创 thinkphp5 网站防止暴力攻击
摘要:针对网站暴力攻击问题,文章介绍了基于ThinkPHP5的黑名单IP拦截方案。通过改造全局异常处理,将访问不存在模块/控制器的异常IP记录到数据库,当错误次数超过50次时自动写入IP.txt黑名单。中间件IpBlock.php在应用启动时检查请求IP是否在黑名单中,拦截恶意访问。该方案包含白名单机制、错误次数统计、黑名单文件自动更新等功能,有效阻止暴力攻击行为。
2025-09-28 19:39:53
211
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(7)修改头像上传后台处理
本文介绍了在Ruoyi框架中实现头像上传功能的具体步骤。前端通过Vue.js构建表单,使用FormData对象上传图片,并在上传成功后更新用户头像。后端使用ThinkPHP框架处理文件上传,封装了一个文件上传服务类FileHandle.php,控制器调用该类处理上传的图片,并将图片路径保存到数据库。需要注意的是,上传图片的保存路径与数据库中的路径格式不同,前端在显示图片时需添加uploads路径前缀。
2025-05-15 10:40:28
254
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(6)一对多关联模型的CURD
本文介绍了如何在PHP中通过模型关联查询实现用户信息的增删改查功能。首先,在SysUserModel.php中定义了一对多的关联查询方法,包括dept、roleIds和postIds,分别关联部门、角色和岗位表。接着,在search方法中使用with进行关联查询,并在控制器SysUser.php中调用该方法实现数据列表的展示。对于新增和修改操作,控制器中的save方法通过事务处理确保数据一致性,支持用户信息的保存和更新。最后,delete方法支持单条或批量删除用户信息,同样通过事务处理保证操作的原子性。通过
2025-05-14 16:07:36
321
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(5)用jwt生成token,并加密token
本文介绍了如何在PHP项目中使用JWT(JSON Web Token)进行用户认证。首先,通过Composer安装firebase/php-jwt库。接着,创建配置文件system.php,设置JWT相关参数,如签发者、接收者、加密密钥、算法和过期时间等。然后,编写JwtHandle服务类,实现生成和验证JWT的功能。生成JWT时,包含用户信息、签发时间、过期时间等;验证JWT时,检查其合法性、有效性和是否过期。此外,还提供了获取用户ID和用户名的方法。在登录验证部分,通过SysUserModel的logi
2025-05-14 09:55:22
305
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(4)根据菜单数据表,生成前端左侧树形菜单路由
本文介绍了如何根据用户ID生成前端左侧树形菜单路由的实现方法。首先,通过SysMenuModel类中的getRouterByUserId方法,根据用户ID获取用户的角色和菜单权限,并生成相应的路由数据。该方法通过判断用户是否为超级管理员,获取用户的角色ID和菜单ID,并根据菜单类型和状态筛选出符合条件的菜单项。接着,将菜单项转换为树形结构,并设置路由的路径、组件、元数据等属性。最后,通过genTree函数将扁平化的菜单数据转换为树形结构,以便前端展示。genTree函数通过遍历菜单项,构建父子关系,最终返回
2025-05-13 20:07:24
159
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(3)定义scope数据权限查询范围
本文介绍了如何在PHP中实现基于数据权限的查询封装。首先,在基类模型BaseModel.php中添加了查询范围方法scopeDeptScope,根据用户的数据权限范围动态构建查询条件。该方法支持五种数据权限类型:全部数据、自定义数据、部门数据、部门及以下数据和仅本人数据。其次,在SysRoleDeptModel和SysDeptModel中分别添加了获取部门ID和子部门ID的查询方法。最后,展示了如何在模型中调用父模型的scopeDeptScope方法来实现数据权限过滤。通过这种封装,可以简化数据权限控制的实
2025-05-13 08:34:59
241
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(2)自定义全局异常和操作日志中操作耗时
本文介绍了如何通过创建 BaseController.php 和自定义全局异常处理来增强ThinkPHP应用的日志记录和异常管理。首先,BaseController.php 作为所有控制器的父类,提供了统一的请求处理、日志记录和响应返回功能。它记录了请求的开始时间、执行时间,并将操作日志写入数据库。其次,通过自定义全局异常处理类 ExceptionHandler,实现了对异常的捕获、日志记录和友好错误信息的返回。异常处理类在捕获异常时,会根据异常类型返回不同的错误信息,并将异常信息记录到日志文件中。此外,入
2025-05-12 08:47:36
289
原创 基于RuoYi-Vue3-master,后端thinkphp5开发Api——(1)全局解决跨域
在PHP应用中配置跨域资源共享(CORS),首先在application目录下新建behavior文件夹,并创建CORS.php文件。该文件定义了一个CORS类,在appInit方法中设置响应头,允许所有来源的请求,并指定允许的请求方法和头信息。如果请求方法是OPTIONS,则直接退出。接着,在tags.php文件中,将CORS类绑定到app_init生命周期事件,确保在应用初始化时自动处理跨域请求。这样,全局的跨域配置就完成了。
2025-05-12 08:09:03
284
原创 thinkphp5 修改图形验证码支持vue前后端分离验证
本文介绍了如何在ThinkPHP框架中实现验证码的API化处理。首先,通过在配置文件中增加isApi参数,控制验证码返回格式为图片或Base64数据。接着,修改Captcha.php文件,使其在isApi为true时返回包含Base64编码的验证码图片、UUID等信息的JSON数据。同时,调整了验证码的检查函数,支持传入uuid参数。在控制器中,通过配置isApi为true,调用验证码生成方法并返回JSON数据。前端通过JavaScript处理返回的Base64图片并显示。最后,在登录验证时,使用uuid作
2025-05-11 20:38:00
422
原创 thinkphp5 使用算术验证码,并支持加减乘除计算
本文介绍了如何配置和修改ThinkPHP框架中的验证码功能,使其支持算术验证码,并扩展了加减乘除的运算功能。首先,通过修改配置文件启用算术验证码。其次,由于原字体不支持某些运算符号,添加了“Liberation Sans”字体并重命名为'7.ttf'。接着,修改了Captcha.php文件,增加了对加减乘除运算的支持,并确保运算结果符合逻辑。最后,展示了算术验证码的显示效果。通过这些步骤,验证码功能得到了增强,能够更好地满足安全验证的需求。
2025-05-11 20:08:36
263
原创 Thinkphp5结合Adodb连接access数据库
Thinkphp5结合Adodb连接access数据库解决问题:1.安装adodb:composer require adodb/adodb-php;2.adodb连接数据库 Base.php:class Base{ var $dbtype; //定义成员变量,数据库类型 var $host; //定义成员变量,数据库服务器 var $user; //定义成员变量,服务器用户名 var $pw
2021-03-25 17:15:21
835
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅