本文实例讲述了laravel框架中表单请求类型和CSRF防护。分享给大家供大家参考,具体如下:
laravel中为我们提供了绑定不同http请求类型的函数。
1
2
3
4
5
6
|
Route::get( '/test' , function () {}); Route::post( '/test' , function () {}); Route::put( '/test' , function () {}); Route::patch( '/test' , function () {}); Route:: delete ( '/test' , function () {}); Route::options( '/test' , function () {}); |
但有些时候,我们通过创建资源控制器,里面的 update() 方法绑定的是 PUT 类型的http请求。
这就需要我们通过表单提交模拟PUT请求。我们可以自已添加一个 _method 的隐藏字段,值为 PUT。
1
2
3
4
5
6
|
<form action= "{{ route('test') }}" method= "post" > <input type= "hidden" name= "_method" value= "PUT" > 用户名:<input type= "text" name= "name" > 密码:<input type= "password" name= "pwd" > <input type= "submit" value= "提交" > </form> |
也可以使用laravel为我们提供的 method_field() 方法。
1
2
3
4
5
6
|
<form action= "{{ route('test') }}" method= "post" > {{ method_field( 'PUT' ) }} 用户名:<input type= "text" name= "name" > 密码:<input type= "password" name= "pwd" > <input type= "submit" value= "提交" > </form> |
laravel默认会对每个提交请求,进行csrf令牌的验证。为了通过验证,需要在表单中添加 _token 隐藏字段。
1
2
3
4
5
6
|
<form action= "{{ route('test') }}" method= "post" > <input type= "hidden" name= "_token" value= "{{ csrf_token() }}" > 用户名:<input type= "text" name= "name" > 密码:<input type= "password" name= "pwd" > <input type= "submit" value= "提交" > </form> |
或者使用 csrf_field() 方法。
1
2
3
4
5
6
|
<form action= "{{ route('test') }}" method= "post" > {{ csrf_field() }} 用户名:<input type= "text" name= "name" > 密码:<input type= "password" name= "pwd" > <input type= "submit" value= "提交" > </form> |
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/jkko123/p/10805728.html