提交数据时验证用户提交的数据是否正确
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')
}
});