Hey Brotzka Did you find a solution for this problem? im having the same error
Apr 14, 2016
1
Level 1
TokenMismatchException in VerifyCsrfToken.php line 67:
Hey hey,
I've got a problem wchich results in the error message: "TokenMismatchException in VerifyCsrfToken.php line 67:".
I have a form which takes database connection information from the user in order to "install" Laravel via a userfriendly webinterface.
After the user submitted the form, I perform a connection test. If it fails, the method returns the view with the form so the user could correct his input. So, this works for the first time. But when the user enters a wrong values for the second time, I got the error message.
But why? Here is my code:
Controller:
public function dbSetup(Request $request){
if($request->isMethod('get')){
return view('setup.dbSetup');
} else {
/*
* Check, if DB-Connection could be established
* Write data to .env
* Run migration
*/
$this->validate($request, [
'db_typ' => 'required',
'db_host' => 'required',
'db_port' => 'required',
'db_user' => 'required',
'db_name' => 'required',
'db_password' => 'required'
]);
$request->session()->flush();
try {
$db = new \PDO(
'mysql:host=' . $request->db_host . ';dbname=' . $request->db_name,
$request->db_user,
$request->db_password
);
$env_update = $this->changeEnv([
'DB_CONNECTION' => $request->db_typ,
'DB_HOST' => $request->db_host,
'DB_PORT' => $request->db_port,
'DB_DATABASE' => $request->db_name,
'DB_USERNAME' => $request->db_user,
'DB_PASSWORD' => $request->db_password
]);
if($env_update){
// Run migration
$migration = new Process("php artisan migrate");
$migration->setWorkingDirectory(base_path());
$migration->run();
if($migration->isSuccessful()){
return redirect('/setup/createAdmin')->with('success', 'Datenbankverbindung wurde erfolgreich eingerichtet und die nötigen Tabellen angelegt.');
} else {
return back()->with('danger', "Tabellen konnten nicht angelegt werden. <br>" . __METHOD__);
}
} else {
return back()->with(
'danger',
"Datenbankverbindungsdaten konnten nicht in die Konfigurationsdatei geschrieben werden:<br>" . __METHOD__
);
}
//return redirect('setup/createAdmin')->with('success', "Datenbankverbindung erfolgreich eingerichtet.");
} catch(\PDOException $ex){
$data = [
'db_host' => $request->db_host,
'db_port' => $request->db_port,
'db_user' => $request->db_user,
'db_name' => $request->db_name,
'db_password' => $request->db_password
];
$request->session()->flash('danger', "Verbindung zur Datenbank konnte nicht hergestellt werden: <br>" . $ex->getMessage());
return view('setup.dbSetup', $data);
}
}
}
My view:
<h2>Datenbankdaten</h2>
<div class="card">
<div class="card-content">
<p>
Bevor du Junperbo nutzen kannst, musst du das Setup ausführen. Trage dazu bitte deinen Key in das unten stehende Feld ein. Den Rest erledigt das System automatisch.
</p>
<div class="row">
<form method="post" action="{{ url('/setup') }}" class="col s12">
<div class="row">
<div class="input-field col s6">
<select name="db_typ" id="db_typ" required>
<option value="mysql">MySQL</option>
<option value="postgres">Postgres</option>
<option value="sqlite">SQLite</option>
<option value="sqlsrv">SQL Server</option>
</select>
<label for="db_typ">Datenbanktyp</label>
</div>
<div class="input-field col s6">
<input type="text" name="db_host" id="db_host" required placeholder="localhost / 127.0.0.1" value="{{ $db_host or '' }}">
<label for="db_host">Datenbankserver</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<input type="text" name="db_port" id="db_port" required placeholder="Standardmäßig 3306" value="{{ $db_port or '3306' }}">
<label for="db_port">Port des Datenbankservers</label>
</div>
<div class="input-field col s6">
<input type="text" name="db_name" id="db_name" required placeholder="z.B. db_xyz1234" value="{{ $db_name or '' }}">
<label for="db_name">Datenbankname</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<input type="text" name="db_user" id="db_user" required placeholder="z.B. u_xyz1234" value="{{ $db_user or '' }}">
<label for="db_user">Datenbanknutzer</label>
</div>
<div class="input-field col s6">
<input type="text" name="db_password" id="db_password" required placeholder="z.B. xyz1234" value="{{ $db_password or '' }}">
<label for="db_password">Datenbankpasswort</label>
</div>
</div>
{!! csrf_field() !!}
<button type="submit" class="waves-effect btn" name="db_setup" value="1">Datenbank einrichten</button>
</form>
</div>
</div>
</div>
Thanks!
Please or to participate in this conversation.