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


编辑用户表单

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

验证器类

  1. <?php
  2. namespace app\validate;
  3. use think\Validate;
  4. class User extends Validate
  5. {
  6. /**
  7. * 定义验证规则
  8. */
  9. protected $rule = [
  10. 'username' => 'require|unique:user',
  11. 'password' => 'require|length:4,16|confirm',
  12. 'mobile' => 'require',
  13. ];
  14. /**
  15. * edit 验证场景 编辑用户信息
  16. */
  17. public function sceneEdit()
  18. {
  19. return $this
  20. ->remove('username', 'unique')
  21. ->remove('password', 'require|confirm');
  22. }
  23. }

使用验证器验证数据

  1. public function edit()
  2. {
  3. if ($this->request->isPost()) {
  4. $data = input('post.');
  5. try {
  6. validate('app\validate\User')
  7. ->scene('edit')
  8. ->batch(true)
  9. ->check($data);
  10. } catch (\think\exception\ValidateException $e) {
  11. halt('验证失败', $e->getError());
  12. }
  13. echo '通过验证';
  14. } else {
  15. return view();
  16. }
  17. }

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


编辑用户表单

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

验证器类

  1. <?php
  2. namespace app\validate;
  3. use think\Validate;
  4. class User extends Validate
  5. {
  6. /**
  7. * 定义验证规则
  8. */
  9. protected $rule = [
  10. 'username' => 'require|unique:user',
  11. 'password' => 'require|length:4,16|confirm',
  12. 'mobile' => 'require',
  13. ];
  14. /**
  15. * 定义错误信息
  16. */
  17. protected $message = [
  18. 'newpassword.requireWith' => '确认密码不能为空',
  19. 'newpassword.confirm' => '两个新密码不一致',
  20. ];
  21. /**
  22. * edit 验证场景 编辑用户信息
  23. */
  24. public function sceneEdit()
  25. {
  26. return $this
  27. ->remove('username', 'unique')
  28. ->remove('password', 'require|confirm')
  29. ->append('newpassword', 'requireWith:password|confirm:password');
  30. }
  31. }

使用验证器验证数据

  1. public function edit()
  2. {
  3. if ($this->request->isPost()) {
  4. $data = input('post.');
  5. try {
  6. validate('app\validate\User')
  7. ->scene('edit')
  8. ->batch(true)
  9. ->check($data);
  10. } catch (\think\exception\ValidateException $e) {
  11. halt('验证失败', $e->getError());
  12. }
  13. echo '通过验证';
  14. } else {
  15. return view();
  16. }
  17. }

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. Vue 大量data及rules的data选项结构组织

    如果Vue文件需要很多的data成员及表单验证,建议使用类似结构 export default{ data(){ const model = { username: 'suzhen', passwor ...

  2. 免费深度学习GPU,Google Yes!

    深度学习越加火热,但是,很多实验室并没有配套的硬件设备,让贫穷的学生党头大 经过网上大量的搜罗,我整理了适合学生党的深度学习解决方案.利用Colab + Kaggle两大免费的GPU环境,让深度学习变 ...

  3. DRF内置权限组件之自定义权限管理类

    DRF内置权限组件permissions 权限控制可以限制用户对于视图的访问和对于具体数据对象的访问. 在执行视图的dispatch()方法前,会先进行视图访问权限的判断 在通过get_object( ...

  4. west_wild 靶机

    ways:smb枚举+suid提权 1:扫描主机发现IP 老套路:netdiscover 一波 2:nmap扫描,发现开放的 端口很多并且开放是SMB协议 3:对目录扫描,发现没有可以利用的点 4:从 ...

  5. Java字符串中有多少个字符多少个char、字节

    Java 中Char是两个字节,Char在Java中也被称为代码单元(Code Unit) . Java中的字符与代码点(Code Unit)一 一对应,而可能对应一个或者两个 代码单元 字符串的le ...

  6. Qt信号与槽使用方法最完整总结

    在图形界面编程中(参考<C++最好的图形库是什么?>),组件之间如何实现通信是核心的技术内容.Qt 使用了信号与槽的机制,非常的高效.简单.易学,方便开发者的使用.本文详细的介绍了Qt 当 ...

  7. 手动SQL注入总结

    1.基于报错与union的注入 注意:union联合查询注入一般要配合其他注入使用 A.判断是否存在注入,注入是字符型还是数字型,有没过滤了关键字,可否绕过 a.如何判断是否存在注入 一般有一下几种 ...

  8. AS报错:gradle project sync failed

    情形一: Android studio下突然报错: gradle project sync failed.Basic functionality(e.g.editing,debugging) will ...

  9. IDEA的externel tool配置Javap -c 命令

    1.ctrl+alt+s打开设置界面,找到Tool-> External Tools 点击 +来增加一个新的外部工具. 在tool setting 的Program输入工具的路径,可以插入宏,比 ...

  10. 8.oracle 表查询

    演示如何使用select语句,接下来对emp.dept.salgrade表结构进行解说. emp 雇员表 字段名称 数据类型 是否为空 备注 -------- ----------- -------- ...