首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >TP6.0中的密码验证逻辑、验证器的使用

TP6.0中的密码验证逻辑、验证器的使用

作者头像
很酷的站长
发布2023-02-17 14:34:06
发布2023-02-17 14:34:06
2.3K0
举报

站长源码网

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

编辑用户表单

代码语言:javascript
复制
<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>

验证器类

代码语言:javascript
复制
<?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');
}
}

使用验证器验证数据

代码语言:javascript
复制
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. 场景二:两个密码框,修改密码时有新密码、确认密码,新密码框不为空时,确认密码才验证

编辑用户表单

代码语言:javascript
复制
<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>
确认密码 <input type="password" name="newpassword" placeholder="必须和新密码文本框保持一致">
<br><button>确认修改</button>
</form>

验证器类

代码语言:javascript
复制
<?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');
}
}

使用验证器验证数据

代码语言:javascript
复制
public function edit()
{
if ($this->request->isPost()) {
$data = input('post.');
try {
validate('app\validate\User')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 场景一:只有一个密码框,并且是可选项,留空不修改密码,不留空则修改密码
  • 2. 场景二:两个密码框,修改密码时有新密码、确认密码,新密码框不为空时,确认密码才验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档