创建验证类
# 创建验证器php think make:validate 模块名/验证器名(首字母大写)
ThinkPHP5.1推荐使用验证器进行数据验证(也支持使用\think\Validate类进行独立验证)
内置规则:
https://www.kancloud.cn/manual/thinkphp5_1/354107
独立验证(就是写到Controller层,不推荐)
https://www.kancloud.cn/manual/thinkphp5_1/354107
use think\Validate;$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验证
验证码
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模板

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>用户登录</title><link rel="stylesheet" href="/static/index/css/bootstrap.css"/><link rel="stylesheet" href="/static/index/css/bootstrap-theme.css"/><style>#vcode {cursor: pointer;}</style></head><body><br><div class="container"><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">用户登录</h3></div><div class="panel-body"><form class="form-horizontal" method="post" action="{:url('login')}"><!--csrf验证-->{:token()}<div class="form-group"><label class="col-sm-2 control-label">账号:</label><div class="col-sm-10"><input type="text" class="form-control" name="username"></div></div><div class="form-group"><label class="col-sm-2 control-label">密码:</label><div class="col-sm-10"><input type="text" class="form-control" name="password"></div></div><div class="form-group"><label class="col-sm-2 control-label">验证码:</label><div class="col-sm-5"><input type="text" class="form-control" name="code"></div><div class="col-sm-5"><img src="{:captcha_src()}" id="vcode"></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><button type="submit" class="btn btn-success">用户登录</button></div></div></form></div></div></div><script src="/static/js/jquery.min.js"></script><script src="/static/index/js/bootstrap.js"></script><script>// 点击更新验证码图片$('#vcode').click(function () {let src = $(this).attr('src') + '?vt=' + Math.random();$(this).attr('src',src);})</script></body></html>



