传智黑马PHP69期-第7部分ThinkPhp-第3天TP-06_独立验证
第7部分 ThinkPhp
第3天 TP
06_独立验证
1.表单验证
表单验证是为了防止访问者跳过客户端验证(js验证)而造成的系统安全问题,一但非法用户绕过客户端验证而服务器端没有加以验证,这样就是很不安全了,所以项目必须要进行服务器端表单验证。
ThinkPHP5.1推荐使用验证器进行数据验证(也支持使用\think\Validate类进行独立验证)
内置规则:
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 : '名称错误';
});


验证器
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);
}
验证器

控制器

csrf验证




2.验证码
https://www.kancloud.cn/manual/thinkphp5_1/354122
tp5框架中默认没有自带验证码功能,需要我们自己去引入安装
# 官方提供的tp官方验证码类
composer require topthink/think-captcha
# 模板中引用
<div>{:captcha_img()}</div>
或者
<div><img src="{:captcha_src()}" alt="captcha" /></div>
# 验证
$this->validate($data,[
'code'=>'require|captcha'
]);
或者
if(!captcha_check($captcha)){
// 验证失败
};

验证器

控制器
验证器去验证

独立去验证验证码

html模板

效果

posted on 2020-02-26 11:51 herisson_pan 阅读(34) 评论(0) 收藏 举报
浙公网安备 33010602011771号