TP5的验证器--validate用法

  我们在写网站和软件交互的时候,通常有js的判断。但就是我在前端JS已经做了些判断,比如什么内容不能为空,邮箱格式是否错误。那我为啥还需要在后端的时候,还需要写一个验证器呢。我在thinkPHP的交流QQ群中,为我解答了疑惑。大概是两点:  

1.前端的判断,是为了更友好的交互,但后端的验证是为了数据库的安全,不受被攻击。比如,精通编程的人,会直接绕过前端的验证,来对后端直接访问。

2.我们会接受客户端传来的参数,这些个参数是不可信的,我们后端开发人员必须对这个参数进行验证。

我这里就总结下我的验证器代码习惯:

第一种是我一开始写的:

      $rule = [
               'goods_name' => 'require',
               'attribute_list' =>'require',
               'album_group' =>'require',
               'album_cover'=>'require',
                '__token__' => 'token',
           ];
           $msg = [
               'goods_name.require' => '分类id不能为空',
               'attribute_list' =>'商品属性值不能为空',
               'album_group' =>'轮播图不能为空',
               'album_cover'=>'封面图不能为空',
                '__token__.token' => 'Token  is  fall'
           ];
           $validate = new  Validate ($rule, $msg);
           $res = $validate->check($_POST);
           if (!$res) {
               $this->ajaxReturn('1', $validate->getError());
           }

你会发现这样写,如果有很多验证器规则,你是不是需要写很多行。而且在同一个控制器中,有很多验证器的规则是会重复的,这就会让代码重复性太高,不够简洁。于是就有了下面第二种,我今天改版的简洁验证。

第二种方式就是我今天改过的:我觉得代码能够简化就简化,十几行代码能搞定的事情,干嘛非要四五十行。所以代码能少则少,这样看着美观点。rule是规则,message是验证消息,scene是验证场景(这是可以用来做多场景的判断)

控制器中的代码:这个ajaxreturn是我封装的一个方法,输出jsoncode形式,这里很简单我就不贴了

$res =$this->validate($_POST,'Commdodity.comm');
           if (true!==$res){
               $this->ajaxReturn('1',$res);
           }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值