think php 3种验证方式
方式一:独立验证
// 验证1、独立验证
//验证的规则
$rule = [
'name' => 'require|max:25',
'username' => 'require',
'password' => 'require',
'email'=>'require'
];
// 验证的错误信息
$msg = [
'name.require' => '用户名不可以为空',
'name.max' => '用户名最多不能超过25个字符',
'username.require' => '用户昵称不可以为空',
'password.require' => '密码不可以为空',
'email.require' => '邮箱不可以为空',
];
$validate = new Validate($rule,$msg);
$result= $validate->check($data);
if(!$result){
$this->error($validate->getError(),'goods/goods/create');
}
方式二:控制器验证
//验证的规则
$rule = [
'name' => 'require|max:25',
'username' => 'require',
'password' => 'require',
'email'=>'require'
];
// 验证的错误信息
$msg = [
'name.require' => '用户名不可以为空',
'name.max' => '用户名最多不能超过25个字符',
'username.require' => '用户昵称不可以为空',
'password.require' => '密码不可以为空',
'email.require' => '邮箱不可以为空',
];
//控制器验证
$result = $this->validate( $data,$rule); if(true !== $result){
// 验证失败 输出错误信息
$this->error($result,'/goods/goods/create');
}
方式三:验证器验证

<?php
// goods 为模块名
namespace app\goods\validate; use think\Validate;
//Goods 为新创建的(Goods.php) class Goods extends Validate
{
protected $rule = [
'name|姓名' => 'require|max:25',
'username|用户名' => 'require',
'password|密码' => 'require',
'email|邮箱' => 'require',
'img|头像' => 'require',
'age|年纪' => 'require',
'sex|性别' => 'require',
'account|账号' => 'require',
'confirmPasswrd|确认密码' => 'require',
'contrast|人脸对比' => 'require',
'branch|部门' => 'require',
];
protected $msg = [
'name.require' => '姓名不可以为空',
'name.max' => '用户名最多不能超过25个字符',
'username.require' => '用户昵称不可以为空',
'password.require' => '密码不可以为空',
'email.require' => '邮箱不可以为空',
'img.require' => '用户头像不可以为空',
'age.require' => '年纪不可以为空',
'sex.require' => '性别不可以为空',
'comment.require' => '个人简介不可以为空',
'account.require' => '账号不可以为空',
'confirmPasswrd.require' => '确认密码不可以为空',
'contrast.require' => '人脸对比不可以为空',
'branch.require' => '部门不可以为空',
];
//验证的场景
protected $scene = [
'user'=>['account','password','confirmPassword','contrast','branch'],
'order' => ['username', 'img','sex','age','comment'],
'administrators'=>['name','username','password','email']
]; }
控制器书写:
//验证器验证
$validate = Loader::validate('Goods');
if(!$validate->scene('administrators')->check($data)){
$this->error($validate->getError(),'/goods/goods/create');
}


think php 3种验证方式的更多相关文章
- Web.xml中四种验证方式
源地址:https://blog.csdn.net/imimi_/article/details/78805642 <security-constraint> 的子元素 <http- ...
- WebService的几种验证方式
转 http://www.cnblogs.com/yoshiki1895/archive/2009/06/03/1495440.html WebService的几种验证方式 1.1 WebS ...
- Tomcat学习总结(5)——Tomcat容器管理安全的几种验证方式
当访问服务器中受保护的资源时,容器管理的验证方法可以控制确认用户身份的方式.Tomcat支持四种容器管理的安全防护,它们是: BASIC (基本验证):通过HTTP验证,需要提供base64编码文本的 ...
- SSH两种验证方式原理
本帖转自 http://www.cnblogs.com/hukey/p/6248468.html SSH验证方式有两种,分别为用户密码认证以及密钥认证. 1.用户密码认证方式 说明: (1) 当客户端 ...
- [ SSH 两种验证方式原理 ]
SSH登录方式主要分为两种: 1. 用户名密码验证方式 说明: (1) 当客户端发起ssh请求,服务器会把自己的公钥发送给用户: (2) 用户会根据服务器发来的公钥对密码进行加密: (3) 加密后的信 ...
- linux下ssh的几种验证方式
ssh的认证方式有很多种,大概可以概括为以下几类: 1.pam认证方式 在配置文件/etc/ssh/sshd_config中对应参数:UsePAM 2.密钥认证方式 配置文件/etc/ssh/sshd ...
- JGit与远程仓库链接使用的两种验证方式(ssh和https)
JGit是使用JAVA的API来操控Git仓库的库,由Eclipse公司维护.他提供的API分成两个层次,底层命令和高层命令.底层API是直接作用于低级的仓库对象,高层的API是一个面向普通用户级别功 ...
- JGit与远程仓库链接使用的两种验证方式(ssh和https)
JGit是使用JAVA的API来操控Git仓库的库,由Eclipse公司维护.他提供的API分成两个层次,底层命令和高层命令.底层API是直接作用于低级的仓库对象,高层的API是一个面向普通用户级别功 ...
- Linux vsftpd服务配置以及三种验证方式以及常见错误解决办法
文件传输协议(FTP): 文件传输协议(FTP,File Transfer Protocol),即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件 ...
随机推荐
- 论新手该如何学习java?
由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间,还有一个很重要的原因就是java这门语言更适合商业应用,所以高校里大部分博士老师们对此语言的了解甚至不比本科生多. 在这种环境下, ...
- STL priority_queue 优先队列 小记
今天做题发现一个很有趣的地方,竟然还是头一次发现,唉,还是太菜了. 做图论用STL里的priority_queue去优化prim,由于特殊需求,我需要记录生成树中是用的哪些边. 于是,我定义的优先队列 ...
- bom-简单动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- NSArray文件读写
1.NSArray数据写入到文件中 NSArray *arr = @[@"lnj", @"lmj", @"jjj", @"xcq& ...
- hibernate中的一级缓存与闪照区
首先Hibernate中的一级缓存默认是打开的,并且范围从session创建到session关闭,存储的数据必须是持久态的数据. 1 //从session创建开始,一级缓存也跟着创建 2 Sessio ...
- Python多线程并发的误区
由于项目要做一个并发测试,由于断言的东西较多,决定手写脚本.于是用python写了脚本: def test_method(thread_no): print("%s===test_metho ...
- ValueStack与ContentMap (ActionContext.getContext().getValueStack().set())
在方法 <action name="zilei" class="dtreeAction" method="zilei"> & ...
- 宝塔面板部署springboot项目并使用域名访问
环境准备:服务器搭建宝塔linux面板项目: springboot项目项目打包方式jar包 环境: 一.服务器,一个域名,然后再服务器上(DNS服务)将域名解析好.把安全组设置好. 二.用宝塔快速搭建 ...
- 理解Faster R-CNN
首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...
- Solution -「SHOI2016」「洛谷 P4336」黑暗前的幻想乡
\(\mathcal{Description}\) link. 有一个 \(n\) 个结点的无向图,给定 \(n-1\) 组边集,求从每组边集选出恰一条边最终构成树的方案树.对 \(10^9+ ...