ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 添加管理员 > 在向数据库录入用户提交来的数据前,一定要做好数据验证。 ## 数据验证 > 在做数据验证时,不但要做后端的数据验证,同时也要做好前端的数据验证 ### 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)