laravel 请求数据验证

提交数据时验证用户提交的数据是否正确

 public function login(request $request){
        if($request->isMethod('get')){
            return view('maneger.login');
        }elseif($request->isMethod('post')){    //判断请求方式
            $this->validate($request,[                //验证提交数据
                'username'=>"required|min:2|max:16",  //key :对应匹配的规则      
                'password'=>'required|between:6,20',
                'captcha' =>'required|size:5|captcha'
            ]);
            //验证成功则代码继续执行 失败Laravel将会自动将用户重定向回上一个位置。此外,所有验证错误信息会自动一次性存放到session

            echo '验证通过';
        }

这是因为Laravel总是从session数据中检查错误信息,而且如果有的话会自动将其绑定到视图。所以,值得注意的是每次请求的所有视图中总是存在一个$errors变量

     //显示返回的错误信息
    @if (count($errors) > 0)
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif

        

 

 手动创建验证器

  use Validator;  //需先引入 validator门面 

 public function login(request $request){
        if($request->isMethod('get')){
            return view('maneger.login');
        }elseif($request->isMethod('post')){
            //第一个值 传入需要验证的数据,第二个值为验证规则
            $validator=Validator::make($request->all(),[  
                'username'=>"required|min:2|max:16",
                'password'=>'required|between:6,20',
                'captcha' =>'required|size:5|captcha'
            ]);
            //判断是否验证失败
            if($validator->fails()){
                
                return redirect('/admin/login')    //失败跳转指定路径
                    ->withErrors($validator)       //返回错误信息
                    ->withInput();                 //返回请求信息
            }
            echo '验证通过';
        }

    }

 

页面通过 $errors 获取错误信息

通过old(key) 获取上次对应的请求数据

   <div class="formControls col-xs-8">
                    <input id="username" name="username" type="text" placeholder="账户" class="input-text size-L"  value="{{old('username')}}">
   </div>

 

注:web入口文件表单或ajax请求 都必须加上token (CSRF “令牌”)

表单:在表单中直接添加

{{csrf_field()}}

ajax:添加标签 ajax获取对应属性值添加到请求头中

除了将 CSRF 令牌作为 POST 参数进行验证外,还可以通过设置 X-CSRF-Token 请求头来实现验证,VerifyCsrfToken 中间件会检查 X-CSRF-TOKEN 请求头,首先创建一个 meta 标签并将令牌保存到该 meta 标签:

<meta name="csrf-token" content="{{ csrf_token() }}">

然后在 js 库(如 jQuery)中添加该令牌到所有请求头,这为基于 AJAX 的应用提供了简单、方便的方式来避免 CSRF 攻击:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值