我正在尝试在laravel 5中创建一个注册表单,它给了我这个错误:
糟糕,看起来出了问题。
1/1 在编译.php第2440行中的TokenMismatchException:
这是我的观点/ register.blade.php:
<form class="form-horizontal" action = "inregistrare_process" method = "POST">
.....
</form>
这是我的app / Register.php
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Register extends Eloquent {
protected $guarded = array();
protected $table = 'users';
public $timestamps = 'false' ;
public static function saveFormData($data)
{
DB::table('users')->insert($data);
}
}
这是我的Controllers / RegisterController.php
<?php namespace App\Http\Controllers;
use App\Register;
class RegisterController extends Controller {
public function store()
{
Register::saveFormData(Input::except(array('_token')));
}
}
这是我的routes.php
Route::get('inregistrare',function(){
return view('register');
});
Route::post('inregistrare_process', function()
{
$obj = new RegisterController() ;
return $obj->store();
});
有人可以帮助我完成这项工作,还是让我另外选择如何使注册页面有效?
答案 0 :(得分:2)
在表单声明后插入下面的行
<input type="hidden" name="_token" value="{{ csrf_token() }}">
您是否拥有会话文件的写入权限?默认会话存储在/ storage / framework / sessions /中 检查您是否拥有该目录的写入权限。
如果您使用的是Ajax请求,请将tokenMatch()方法添加到app / Http / Middleware / VerifyCsrfToken.php。
protected function tokensMatch($request)
{
$token = $request->ajax() ? $request->header('X-CSRF-Token') : $request->input('_token');
return $request->session()->token() == $token;
}
并将其添加到您的js文件中
$.ajaxSetup(
{
headers:
{
'X-CSRF-Token': $('input[name="_token"]').val()
}
});