2 php laravel laravel-5 laravel-5.3 laravel-5.4
我很新PHP,Laravel而且我对{{csrf_field()}}插入到符号中的符号有以下疑问<form>.
在视图中我有以下形式:
<form method="post" action="/registration">
<div class="form-group">
<label>Nome</label>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user"></i></div>
<input type="text" name="name" class="form-control" placeholder="Inserisci il tuo nome">
</div>
</div>
<div class="form-group">
<label>Cognome</label>
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-user"></i></div>
<input type="text" name="surname" class="form-control" placeholder="Inserisci il tuo cognome">
</div>
</div>
<!-- Some other fields -->
{{csrf_field()}}
<button type="submit" class="btn btn-default">Submit</button>
</form>Run Code Online (Sandbox Code Playgroud)
这是由这种最小化的控制器方法处理的:
public function store(Request $request)
{
return $request->all();
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我{{csrf_field()}}在提交按钮之前放置"statment"它工作正常并且请求由控制器方法正确处理但是如果我删除此行它不能工作并且我获得了TokenMismatchException.
为什么会如此以及究竟代表什么{{csrf_field()}}以及为什么我要在表单中使用它?
CSRF 代表跨站请求伪造。
在这种情况下,Laravel 要求将此字段与请求一起发送,以便在回发时验证请求不是伪造的。
一个很好的解释可以在这里找到:https : //stackoverflow.com/a/33829607/1068537