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

Posted cfmy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP6.0中的密码验证逻辑验证器的使用相关的知识,希望对你有一定的参考价值。

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 appvalidate;

use thinkValidate;

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(‘appvalidateUser‘)
				->scene(‘edit‘)
				->batch(true)
				->check($data);
		} catch (	hinkexceptionValidateException $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 appvalidate;

use thinkValidate;

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(‘appvalidateUser‘)
				->scene(‘edit‘)
				->batch(true)
				->check($data);
		} catch (	hinkexceptionValidateException $e) {
			halt(‘验证失败‘, $e->getError());
		}
		echo ‘通过验证‘;
	} else {
		return view();	
	}
}

以上是关于TP6.0中的密码验证逻辑验证器的使用的主要内容,如果未能解决你的问题,请参考以下文章

密码验证码的逻辑错误

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

21个常用代码片段

JSP 设计教师与学生不同登陆界面(带验证码)

PHP 代码片段

c_cpp 快速代码片段,用于在统计(阻止)/ dev / rdsk中的设备时验证fstat64和stat64的行为。