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小时内删除。
发表评论