# 添加管理员
> 在向数据库录入用户提交来的数据前,一定要做好数据验证。
## 数据验证
> 在做数据验证时,不但要做后端的数据验证,同时也要做好前端的数据验证
### 1\. 前端验证
> 前端验证是非常必要的,通常情况上是使用js来实现的,HTML5也加入了原生的表单验证,但是一般情况下会使用js来做前端验证。
#### 前端数据验证的好处
1. 客户端处理,效率高
2. 客户端运行,减少服务器间的数据交互,减轻服务器压力。
> 前验证通过后,才会将数据提交后端进行处理
### 2.后端数据验证
> 后端验证是用户数据到数据库的最后一道防线,所以更为重要,必要要做的严谨。大家必要明白,客户端提交来的数据是不可靠的,是可以被篡改的,所以虽然前端验证通过了,在后台也必要进行二次验证,要保证最终的数据准确无误。
## 知识点
### 1\. 前端数据验证-Layui 自定义验证规则
> 在这里使用`layui`前端框架来实现前端的数据验证
#### Layui自定义验证规则基本用法:
1. js(自定义验证规则)部分
~~~
//自定义验证规则
form.verify({
account: function(value){
if(value.length < 5){
return '账号至少得5个字符啊';
}
}
,passwd: [/(.+){6,12}$/, '密码必须6到12位']
,repasswd: function(value){
if($('#L_pass').val()!=$('#L_repass').val()){
return '两次密码不一致';
}
}
});
~~~
> 验证规则的名称可以自定义
2. html部分
> 使用`lay-verify`属性来调用验证规则,多个规则之前用`|`分隔
~~~
<form class="layui-form">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>账号
</label>
<div class="layui-input-inline">
<input type="text" id="account" name="account" required="" lay-verify="required|account"
autocomplete="off" class="layui-input" placeholder="请输入管理员账号">
</div>
</div>
<div class="layui-form-item">
<label for="L_pass" class="layui-form-label">
<span class="x-red">*</span>密码
</label>
<div class="layui-input-inline">
<input type="password" id="passwd" name="passwd" required="" lay-verify="passwd"
autocomplete="off" class="layui-input" placeholder="请输入密码">
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
<span class="x-red">*</span>确认密码
</label>
<div class="layui-input-inline">
<input type="password" id="repasswd" name="repasswd" required="" lay-verify="repasswd"
autocomplete="off" class="layui-input" placeholder="请输入确认密码">
</div>
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button class="layui-btn" lay-filter="add" lay-submit="">
添加
</button>
</div>
</form>
~~~
### 2\. 后端数据验证-ThinkPHP5 验证器
> 在ThinkPHP中提供了非常方便的后端数据验证-验证器。在这里呢,就使用验证器来实现后端的数据验证。
#### 验证器的基本用法
##### 1\. 创建验证器
在这里咱们为后台模块创建单独验证器,所以在后台模块`admin`中创建验证器目录`validate`,在该目录中创建验证器`Manager.php`。
创建后目录结构如下:
![](https://box.kancloud.cn/805b8e99f91c8d7e1f1a78ee77c193af_276x372.png)
`Manager.php`其内容如下:
~~~
<?php
namespace app\admin\validate;
use think\Validate;
class Manager extends Validate
{
protected $rule=[
'id'=>'require',
'account'=>'require|min:5|unique:manager',
'passwd'=>'require|min:6',
'repasswd'=>'require|confirm:passwd',
];
protected $message=[
'id.require'=>'id输入不正确',
'account.require'=>'账号不能为空',
'account.min'=>'账号不能小于5个字符',
'account.unique'=>'账号已存在',
'passwd.require'=>'密码不能为空',
'passwd.min'=>'密码长度不能小于6个字符',
'repasswd.require'=>'确认密码不能为空',
'repasswd.confirm'=>'两次密码输入不一致',
];
protected $scene=[
'add'=>['account','passwd','repasswd'],
'edit'=>['account','passwd','repasswd'],
];
}
~~~
复制
> 关于验证器的更多的用法(自定义验证规则、内置验证)等,请参考[ThinkPHP5官方手册](https://www.kancloud.cn/manual/thinkphp5/129352)
- 课程介绍
- thinkphp5.0
- 安装
- 开发规范
- 目录结构
- 配置参数
- 系统常量
- tp5自带的函数
- 助手函数
- 扩展类库
- 基本类库
- Workerman
- think-queue
- 验证码
- 图片
- 权限认证
- 课前准备
- 数据库设计
- 模块设计
- 管理员管理
- 添加
- 编辑
- 删除和批量删除
- 列表页
- 实列
- 权限管理
- 操作日志
- 基于行为的日记录
- 行为日志的扩展
- 助手类库
- 自建函数
- 将数组转成uri字符串
- 获取当前服务器的IP
- curl-post
- 截取文字中间的字符串
- 检查中文姓名
- 省市区分别截取
- 抽奖概率问题
- 短信邮箱模板替换
- 生成csv
- PHP 图片转base64
- 银行卡验证
- json返回接口封装
- 无限极分类
- 病毒
- xml和数组互转
- xml转成数组
- 数组转xml
- tp控制器相关
- 获取thinkph5下控制器和方法名
- 后台查询的简单封装
- 网址信息
- 获取网站logo
- 判断url是否存在
- 获取title
- 判断远程文件是否存在
- 获取页面所有链接
- 过滤
- 截取
- 时间
- 获取服务器信息
- 根据id生成唯一邀请码
- 随机颜色
- 数组字符串互换
- 创建多级目录
- 懒人查询
- 时间和时间戳转换
- 房间id生菜
- 获取需要的数组元素
- 文件和文件夹
- 文件类库
- 文件夹
- 七牛云
- 七牛云运用场景
- 七牛云使用实例
- 邮箱
- 邮箱验证
- 邮箱发送
- 数据库
- 数据库在thinkphp中的补充方法
- 备份和安全
- sql执行
- 数据库备份2
- 时间日历
- 时间格式化
- 日历
- 图片相关
- 自动获取图片主题颜色
- 获取html中的图片路径
- 获取图片场景
- 获取图片实践
- 图片处理类
- 图片处理场景
- 图片处理实践
- 数据验证分析
- 身份证相关
- 新闻
- 自建类库
- 简易分类库
- php 压缩CSS代码
- 身份证
- 分词和抽词
- 分词应用场景
- 分词实践
- 中文转拼音
- 中文转拼音场景
- 中文转拼音实践
- 二维码操作
- 二维码场景
- 二维码实践
- 短地址
- PHPWord
- 插件化
- 插件扩展库
- 插件列表
- 插件安装和卸载
- 插件实践
- 插件的离线安装
- 计划任务
- 计划任务安装
- 计划任务实践
- 定时器
- 注册登录
- 普通登录注册
- 第三方登录注册
- jwt接口登录注册
- 短信
- 飞鸽短信
- 阿里短信
- 消息队列
- 网站地图
- 全站静态化
- 缓存
- 文件导出
- PDF生成
- phpword
- PHPExcel
- 其他类库
- 百度
- 百度语音
- 快递
- 跨域问题
- 宝塔
- 搜索记录