TP5验证器的使⽤、系统内置验证规则有哪些?今天给⼤家分享Thinkphp5,关于验证器的使⽤,⾸先给⼤家截图:
我们今天以验证登陆为实例:
第⼀步:创建验证器:在模块⽬录下创建新⽂件夹,命名为:validate,在下⾯创建⼀个User.php的⽂件,并复制以下代码:
1<?php
2
3// +----------------------------------------------------------------------
4// | Description: ⽤户验证器
5// +----------------------------------------------------------------------
6// | Author: phpAndy <383916522@qq>
7// +----------------------------------------------------------------------
8
9namespace app\admin\validate;
10
11use think\Validate;
12
13class User extends Validate
14{
15    /**
16    * 定义验证规则
17    * 格式:'字段名'    => ['规则1','规则2'...]
18    *
19    * @var array
20    */
21  protected $rule = [
22        'username'  => 'require|alphaDash',
23        'password'  => 'require|alphaNum|min:6|max:15',
24        'code'      => 'require|captcha',
25    ];
26    /**
27    * 定义错误信息
28    * 格式:'字段名.规则名'    => '错误信息'
29    *
30    * @var array
31    */
32    protected $message = [
33        'quire'      => '⽤户名不能为空',
34        'username.alphaDash'    => '⽤户名只能以字母、数字、-、_组成',
35        'quire'      => '密码不能为空',
36        'password.alphaNum'    => '密码只能以字母、数字组成',
37        'password.min'          => '密码最⼩长度:6个字符',
38        'password.max'          => '密码最⼤长度:15个字符',
39        'quire'          => '验证码不能为空',
40        'code.captcha'          => '验证码错误',
41    ];
42}
第⼆步:创建模型层,创建⼀个名为User.php的模型,并复制以下代码(验证器的使⽤其实⽤不上模型层,可以忽略此步骤):
<?php
// +----------------------------------------------------------------------
// | Description: ⽤户模型
// +----------------------------------------------------------------------
// | Author: phpAndy <383916522@qq>
// +----------------------------------------------------------------------
namespace app\admin\model;
use think\Model;
class User extends Model
{
/**
* 设置主键
* @var string
*/
protected $pk = 'id';
/**
* 设置数据表名
* @var string
*/
protected $table = 'admin_user';
/**
* 设置当前模型的数据库
* @var string
*/
protected $connection = 'currency';
/**
* 根据⽤户名查询
* @param $username
* @return array|false|\PDOStatement|string|Model
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function addUser($username){
return $this->where('u_name', $username)->find();
}
/**
* 根据⽤户id更新⽤户
* @param $id
* @param $data
* @return static
*/
public function updateUser($id,$data){
return $this->where('id', $id)->update($data);
}
}
第三步:新建视图层这个就写⼏个input框就⾏,我就不复制我的代码了:第四步:创建控制器,命名为Login.php,复制以下代码:
1<?php
2// +----------------------------------------------------------------------
3// | Description: 登陆控制器
4// +----------------------------------------------------------------------
5// | Author: phpAndy <383916522@qq>
5// | Author: phpAndy <383916522@qq>
6// +----------------------------------------------------------------------
7
8namespace app\admin\controller;
9
10use think\Controller;
11use think\Request;
12use think\facade\Session;
13use think\captcha\Captcha;
14use app\admin\model\User;
15use app\admin\model\LoginLog;
16use app\admin\validate\User as validateUser;
17
18class Login extends Controller
19{
20    /**
21    * 登陆 - ajax
22    * @param Request $request
23    * @param validateUser $validateUser
24    * @param User $user
25    * @param LoginLog $loginLog
26    * @return array|mixed|\think\response\Json
27    * @throws \think\db\exception\DataNotFoundException
28    * @throws \think\db\exception\ModelNotFoundException
29    * @throws \think\exception\DbException
30    */
31    public function index(Request $request,validateUser $validateUser,User $user,LoginLog $loginLog){
32        if($request->isAjax()){
33            //获取提交数据
34            $data = $request->param();
35            //验证器验证提交数据
36            if (true !== $validateUser->check($data)) {
37                return $validateUser->getError();
38            }
39            //到此步骤,你可以尝试到验证器有没有起作⽤..........
40
41            //判断⽤户是否存在
42            $hasUser = $user->addUser($data['username']);json值的类型有哪些
43            if(empty($hasUser)){
44                return json(['code' => -1, 'data' => '', 'msg' => '⽤户名错误']);
45            }
46            //判断密码是否正确、添加登陆⽇志
47            if(md5(md5($data['password'])) != $hasUser['u_password']){
48                $loginLog->writeLog($hasUser['id'],$data['username'],'⽤户【'.$data['username'].'】登录失败:密码错误',2);
49                return json(['code' => -2, 'data' => '', 'msg' => '密码错误']);
50            }
51            //判断⽤户状态、添加登陆⽇志
52            if(1 != $hasUser['u_status']){
53                $loginLog->writeLog($hasUser['id'],$data['username'],'⽤户【'.$data['username'].'】登录失败:该账号被禁⽤',2);
54                return json(['code' => -3, 'data' => '', 'msg' => '该账号被禁⽤']);
55            }
56            //保存⽤户信息
57            Session::set('u_name', $data['username']);
58            Session::set('l_user_id', $hasUser['id']);
59            //更新管理员状态
60            $param = [
61                'u_login_num'  => $hasUser['u_login_num'] + 1,
62                'u_login_ip'  => $request->ip(),
63                'u_login_time' => time()
64            ];
65            if($user->updateUser($hasUser['id'],$param)){
66                $loginLog->writeLog($hasUser['id'],session('u_name'),'⽤户【'.session('u_name').'】登录成功',1);
67            }
68            return json(['code' => 1, 'data' => url('index/index'), 'msg' => '登录成功']);
69        }else{
70            return $this->fetch();
然后,我们先测试以下,看看能不能验证成功:
接下来,我们看看Thinkphp5都有哪些验证规则:
1、格式验证类
require
  验证某个字段必须,例如:'name'=>'require'
number 或者 integer
  验证某个字段的值是否为数字(采⽤filter_var 验证),例如:'num'=>'number'70
return $this->fetch();71
}72
}73
74
/
**75
* 验证码76
* @param Captcha $captcha 77
* @return \think\Response 78
*/79
public function verify(Captcha $captcha)80
{81
//图⽚验证码⾼度82
$captcha->imageH = 32;83
//图⽚验证码宽度84
$captcha->imageW = 100;85
/
/验证码86
$captcha->codeSet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';87
//验证码长度88
$captcha->length = 4;89
//是否画混淆曲线90
$captcha->useNoise = false;91
//验证码字体⼤⼩92
$captcha->fontSize = 14;93
return $captcha->entry();94    }95}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。