tp5------实践在服务器端对数据进行验证及添加验证场景

版权声明:本文为博主原创文章,未经博主允许不得转载。 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
          ]; 

猜你喜欢

转载自blog.csdn.net/iheyu/article/details/87432884
今日推荐