当前位置: 代码迷 >> 综合 >> 07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token
  详细解决方案

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

热度:89   发布时间:2023-10-10 23:57:00.0

表单验证是为了防止访问者跳过客户端验证(js验证)而造成的系统安全问题,一但非法用户绕过客户端验证而服务器端没有加以验证,这样就是很不安全了,所以项目必须要进行服务器端表单验证

ThinkPHP5.1推荐使用验证器进行数据验证(也支持使用\think\Validate类进行独立验证)

内置规则:

https://www.kancloud.cn/manual/thinkphp5_1/354107

3.1、独立验证

https://www.kancloud.cn/manual/thinkphp5_1/354107

$validate = Validate::make([
'name'  => 'require|max:25',
'email' => 'email'
],[
'name.require' => '名称必须填写',
'name.max' => '名称最多只能是25字',
'email.email' => '邮箱不合法'
]);$data = ['name'  => 'thinkphp','email' => 'thinkphp@qq.com'
];if (!$validate->check($data)) {dump($validate->getError());
}
# 自定义验证规则
Validate::extend('checkName', function ($value, $rule) {return $rule == $value ? true : '名称错误';
});

 

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

3.2、验证器

thinkphp5.1之后推荐使用的方式,验证器,就是一个独立的文件,此文件就干一件事件,验证。

# 创建验证器php think make:validate 模块名/验证器名(首字母大写)# 验证器namespace app\index\validate;use think\Validate;class User extends Validate{protected $rule =   ['name'  => 'require|max:25','age'   => 'number|between:1,120','email' => 'email',    ];protected $message  =   ['name.require' => '名称必须','name.max'     => '名称最多不能超过25个字符','age.number'   => '年龄必须是数字','age.between'  => '年龄只能在1-120之间','email'        => '邮箱格式错误',    ];}# 控制器$ret = $this->validate($request->post(),User::class);if (true !== $ret){dump($ret);}

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

控制器07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

3.3、csrf验证

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

07thinkphp 第三天 表单验证+验证器+ 附 csrf验证token

  相关解决方案