1. 场景一:只有一个密码框,并且是可选项,留空不修改密码,不留空则修改密码


编辑用户表单

<form action="" method="post">
用户名 <input type="text" name="username" value="liang" readonly autocomplete="off"><br>
手机号 <input type="text" name="mobile" value="10086" autocomplete="off"><br>
新密码 <input type="password" name="password" placeholder="可选项,留空则不修改密码"><br>
<button>确认修改</button>
</form>

验证器类

<?php
namespace app\validate; use think\Validate; class User extends Validate
{
/**
* 定义验证规则
*/
protected $rule = [
'username' => 'require|unique:user',
'password' => 'require|length:4,16|confirm',
'mobile' => 'require',
]; /**
* edit 验证场景 编辑用户信息
*/
public function sceneEdit()
{
return $this
->remove('username', 'unique')
->remove('password', 'require|confirm');
}
}

使用验证器验证数据

public function edit()
{
if ($this->request->isPost()) {
$data = input('post.');
try {
validate('app\validate\User')
->scene('edit')
->batch(true)
->check($data);
} catch (\think\exception\ValidateException $e) {
halt('验证失败', $e->getError());
}
echo '通过验证';
} else {
return view();
}
}

2. 场景二:两个密码框,修改密码时有新密码、确认密码,新密码框不为空时,确认密码才验证


编辑用户表单

<form action="" method="post">
用户名 <input type="text" name="username" value="liang" readonly autocomplete="off"><br><br>
手机号 <input type="text" name="mobile" value="10086" autocomplete="off"><br><br>
新密码 <input type="password" name="password" placeholder="可选项,留空则不修改密码"><br><br>
确认密码 <input type="password" name="newpassword" placeholder="必须和新密码文本框保持一致"><br><br>
<button>确认修改</button>
</form>

验证器类

<?php
namespace app\validate; use think\Validate; class User extends Validate
{
/**
* 定义验证规则
*/
protected $rule = [
'username' => 'require|unique:user',
'password' => 'require|length:4,16|confirm',
'mobile' => 'require',
]; /**
* 定义错误信息
*/
protected $message = [
'newpassword.requireWith' => '确认密码不能为空',
'newpassword.confirm' => '两个新密码不一致',
]; /**
* edit 验证场景 编辑用户信息
*/
public function sceneEdit()
{
return $this
->remove('username', 'unique')
->remove('password', 'require|confirm')
->append('newpassword', 'requireWith:password|confirm:password');
}
}

使用验证器验证数据

public function edit()
{
if ($this->request->isPost()) {
$data = input('post.');
try {
validate('app\validate\User')
->scene('edit')
->batch(true)
->check($data);
} catch (\think\exception\ValidateException $e) {
halt('验证失败', $e->getError());
}
echo '通过验证';
} else {
return view();
}
}

TP6.0中的密码验证逻辑、验证器的使用的更多相关文章

  1. 在ASP.NET Core 2.0中使用Facebook进行身份验证

    已经很久没有更新自己的技术博客了,自从上个月末来到天津之后把家安顿好,这个月月初开始找工作,由于以前是做.NET开发的,所以找的还是.NET工作,但是天津这边大多还是针对to B(企业)进行定制开发的 ...

  2. C#2.0中使用yield关键字简化枚举器的实现

    我们知道要使用foreach语句从客户端代码中调用迭代器,必需实现IEnumerable接口来公开枚举器,IEnumerable是用来公开枚举器的,它并不实现枚举器,要实现枚举器必需实现IEnumer ...

  3. Lucene 4.4.0中常用的几个分词器

    一.WhitespaceAnalyzer 以空格作为切词标准,不对语汇单元进行其他规范化处理.很明显这个实用英文,单词之间用空格. 二.SimpleAnalyzer 以非字母符来分割文本信息,并将语汇 ...

  4. FineUI(开源版)v6.0中FState服务器端验证的实现原理

    前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的 ...

  5. 在 vSphere 5.x/6.0 中配置 Network Dump Collector 服务 (2002954)

    vmware KB: https://kb.vmware.com/s/article/2002954?lang=zh_CN 重点配置命令: 使用 vSphere Client 连接到 vCenter ...

  6. C# 9.0中引入的新特性init和record的使用思考

    写在前面 .NET 5.0已经发布,C# 9.0也为我们带来了许多新特性,其中最让我印象深刻的就是init和record type,很多文章已经把这两个新特性讨论的差不多了,本文不再详细讨论,而是通过 ...

  7. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  8. struts2(三)---struts2中的服务端数据验证框架validate

    struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...

  9. EXTJS 密码确认与验证

    extjs 框架是一个非常优秀的前端框架,提供了丰富的功能与炫丽的界面展示,在用 extjs 创建表单时,特别是在注册或修改密码的时候,要对密码进行确认,这里就密码确认一致性验证和大家分享自己的心得与 ...

随机推荐

  1. csapp第九章笔记-虚拟内存

    目录 物理与虚拟寻址 地址空间 虚拟内存作为缓存的工具 虚拟内存作为内存管理的工具 虚拟内存作为内存保护的工具 地址翻译 使用TLB(翻译后备缓冲器)加速地址翻译 多级页表 物理与虚拟寻址 计算机系统 ...

  2. 获取客户端用户真实ip方法整理(jekyll迁移)

    layout: post title: 获取客户端用户真实ip方法整理 date: 2019-08-22 author: xiepl1997 tags: springboot 由请求获取客户端ip地址 ...

  3. 国人开源了一款小而全的 Java 工具类库,厉害啊!!

    最近栈长看到了一款小而全的 Java 工具类库:Hutool,Github 已经接近 14K Star 了,想必一定很优秀,现在推荐给大家,很多轮子不要再造了! Hutool 是什么 Hutool 是 ...

  4. 运放引脚悬空危害大,单片机PWM信号进入运放需要考虑避免运放引脚悬空

    1 问题电路 在没有烧录程序时,单片机的PWM引脚无信号,导致运放的3脚悬空,从而导致运放输出3.5V电压,从二导致后面驱动电流非常大,容易对驱动器件造成损坏 2 改进电路 通过在单片机输出增加下拉电 ...

  5. Linux学习笔记 一 第一章 Linux 系统简介

    Linux简介 一.UNIX与Linux发展史

  6. eclipse中点击pre-commit Request to ReviewBoard,预提交框不显示问题

    需要设置:

  7. SpringBoot 集成SpringSecurity JWT

    目录 1. 简介 1.1 SpringSecurity 1.2 OAuth2 1.3 JWT 2. SpringBoot 集成 SpringSecurity 2.1 导入Spring Security ...

  8. 基础知识、DOS命令

    一.信息安全 1.信息源认证   https 访问控制   ACL   :不能有非法软件驻留   :不能含有未授权的操作等 2.2017-OWASP-TOP5 注入  :失效的身份认证和回话配置 :跨 ...

  9. kernel 4.18.18 rpm 制作

    1.下载kernel源码: wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.18.18.tar.gz 2.解压源码 ...

  10. Word操作之参考文献自动关联和引用

    转载:https://blog.csdn.net/qq_40078121/article/details/88681605 编号选项->定义新编号格式: 选择插入->交叉引用选项: 然后选 ...