# 添加管理員
> 在向數據庫錄入用戶提交來的數據前,一定要做好數據驗證。
## 數據驗證
> 在做數據驗證時,不但要做后端的數據驗證,同時也要做好前端的數據驗證
### 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`。
創建后目錄結構如下:

`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官方手冊](http://www.hmoore.net/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
- 其他類庫
- 百度
- 百度語音
- 快遞
- 跨域問題
- 寶塔
- 搜索記錄