版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iheyu/article/details/87432884
在服务器端对数据进行验证:
3.2版本,用的是字段验证
5.0版本,任何时候,都可以使用Validata 类进行独立的验证操作
1.在admin\controller\Admin.php下添加内容:
public function add() // 添加管理员信息
{
if(request()->isPost()){ // 如果是Post提交过来的,就会通过判断
$validate = new Validate([ // 实例化,验证类
'username' => 'require|max:25', // 以数组的形式写出要验证的字段|并验证规则
'password' => 'require|max:25'
]);
$data=[ // 要验证数组
'username'=> input('username'), // 前面的"username"和"password"是和数据表里的字段对应
'password'=>md5(input('password')) ,// 后面的"username"和"password"是和表单提交过来的数据name值只对应
];
if(!$validate->check($data)){ // 执行验证
$validate->getError(); // 如果有问题整个程序就die掉
die;
}
if(db('admin')->insert($data)){ //添加单条数组
return $this->success('添加管理员成功','lst');
}else{
return $this->error('添加管理员失败!');
}
return;
}
return $this->fetch();
}
2.在admin\view\admin\add.htm 下去掉"必填的内容"修改为:
<label for="username" class="col-sm-2 control-label no-padding-right">管理员名</label>
<div class="col-sm-6">
<input class="form-control" id="username" placeholder="" name="username" type="text">
</div>
<p class="help-block col-sm-4 red">* 必填</p>
</div>
<div class="form-group">
<label for="group_id" class="col-sm-2 control-label no-padding-right">管理员密码</label>
<div class="col-sm-6">
<input class="form-control" id="password" placeholder="" name="password" type="text">
</div>
*****************************************************************************************
3.http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
刷新页面什么也没出来
在admin\controller\Admin.php下修改内容:去掉"use think\Validate; "
<?php
namespace app\admin\controller;
use think\Controller;
4.就出现了Class 'app\admin\controller\Validate' not found(没有找到这个类bug)
要在admin\controller\Admin.php下用完全限定的方法
修改内容:
$validate = new \think\Validate([ // 实例化,验证类
'username' => 'require|max:25', // 以数组的形式写出要验证的字段|并验证规则
'password' => 'require|max:25'
]);
$data=[ // 要验证数组
'username'=> input('username'),
'password'=>md5(input('password')) ,
];
if(!$validate->check($data)){ // 执行验证
$this->error($validate->getError());
die;
}
(验证方法失效了!)
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
*******************************************************************************************
5.验证方法:
在D:\phpStudy\WWW\lianxi\application\admin 下创"validate文件夹"
复制D:\phpStudy\WWW\lianxi\application\admin\controller 下的Admin.php文件到
D:\phpStudy\WWW\lianxi\application\admin\validate 下 修改内容:
<?php
namespace app\admin\validate; // 以app为根路径
use think\validate; // 以think为根路径
class Admin extends Controller
{
public function lst() // 加载管理员列表页
{
return $this->fetch();
}
public function add() // 添加管理员信息
{
if(request()->isPost()){ // 如果是Post提交过来的,就会通过判断
$data=[ // 要验证数组
'username'=> input('username'),
'password'=>md5(input('password')) ,
];
if(db('admin')->insert($data)){ //添加单条数组
return $this->success('添加管理员成功','lst');
}else{
return $this->error('添加管理员失败!');
}
return;
}
return $this->fetch();
}
}
可以找到 D:\phpStudy\WWW\lianxi\thinkphp\library\think\Validate.php就可以了!
6.在admin\validate\Admin.php下 修改内容:
<?php
namespace app\admin\validate; // 以app为根路径
use think\Validate; // 以think为的根路径
class Admin extends Validate
{ // 验证规则
protected $rule = [
'username' => 'require|max:25',
'password' => 'require',
];
// 错误提示
protected $message = [
'username.require' => '管理员名字必须填写',
'username.max' => '管理员名字长度不能大于25位',
'password.require' => '管理员密码必须填写',
];
}
7.在admin\controller\Admin.php 下 修改内容:
<?php
namespace app\admin\controller;
use think\Controller;
class Admin extends Controller
{
public function lst() // 加载管理员列表页
{
return $this->fetch();
}
public function add() // 添加管理员信息
{
if(request()->isPost()){ // 如果是Post提交过来的,就会通过判断
$data=[ // 要验证数组
'username'=> input('username'),
'password'=>md5(input('password')) ,
];
$validate = Loader::validate('Admin'); // 创建对象,验证管理员表
if(!$validate->check($data)){ // 执行验证,要验证数组和执行验证数组要对应
$this->error($validate->getError());die;
}
if(db('admin')->insert($data)){ //添加单条数组
return $this->success('添加管理员成功','lst');
}else{
return $this->error('添加管理员失败!');
}
return;
}
return $this->fetch();
}
}
**************************************************************************************
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
出现:Class 'app\admin\controller\Loader' not found(bug)
8.在admin\controller\Admin.php 下 修改内容:
$validate = \think\Loader::validate('Admin'); // 创建对象,引入空间类元素要用完全限定命名空间方法
if(!$validate->check($data)){ // 执行验证,要验证数组和执行验证数组要对应
$this->error($validate->getError());die;
}
(提示就信息正确就了!)
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
9.验证场景问题:
在admin\validate\Admin.php 下 添加内容:
// 验证场景
protected $scene = [
'add'=> ['username'], // 添加数据时只验证"username"
把admin\controller\Admin.php 下 解除密码加密去掉"md5"
为什么还提示要填写"password",因为没有应用!
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
应用验证场景:
10.在admin\controller\Admin.php 下 添加内容:
if(!$validate->scene('add')->check($data)){ // 执行验证,要验证数组和执行验证数
组要对应 ,scene('add')验证add场景
$this->error($validate->getError());die;
}
添加管理员成功!
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
11.在admin\validate\Admin.php 下 要验证password
// 验证场景
protected $scene = [ // 添加数据时验证
'add'=> ['username','password'], // 一个元素就是一个验证场景,add场景要验证写在[]里
];
就可以了!
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
12.在application\admin\validate\Admin.php下
把'username' => 'require|max:25',改成'username' => 'require|min:25',
把'username.max' => '管理员名字长度不能大于25位',
改成'username.min' => '管理员名字长度不能小于25位',
在admin\controller\Admin.php 下把验证场景去掉:scene('add')
if(!$validate->check($data)){ // 执行验证,要验证数组和执行验证数组要对应 ,scene('add')
验证add场景
$this->error($validate->getError());die;
}
就显示添加管理员名称不能小于25位了!
http://www.iheyu.com/lianxi/public/index.php/admin/admin/add.html
13.在admin\controller\Admin.php 下把验证场景去掉:scene('add')加回去
在admin\validate\Admin.php下 修改内容:
// 验证场景
protected $scene = [ // 添加数据时验证
'add'=> ['username'=>'require','password'], // 一个元素就是一个验证场景,add场景
username只验证require
];