Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

timishere's avatar

Trying to use POST method with form - TokenMismatchException

So I have a form with the POST method, and the action goes to /test. Here it is:

    <form method="POST" action="/test">
<label class = "u-pull-left" for="emailState">Initial State:</label>
               <select class = "u-full-width" id="emailState">
                        <option value='Enabled with email'>Enabled with email</option>
                        <option value='Enabled no email'>Enabled no email</option>
              </select>
     <input class="button-primary" type="submit" value="Submit">
    </form>

and in my web.php file, I have:

Route::post('/test', 'SignatureController@add_signature');

and finally, in my SignatureController.php file, I have:

          <?php

              namespace App\Http\Controllers;

             use Illuminate\Http\Request;

              use App\Http\Requests;

              class SignatureController extends Controller
              {
                  public function add_signature(Request $request) {
                                    return $request;
                   }
              }

Whenever I click the submit button, I get this error:

          Whoops, looks like something went wrong.

          1/1
          TokenMismatchException in compiled.php line 3111:
          in compiled.php line 3111
          at VerifyCsrfToken->handle(object(Request), object(Closure)) in compiled.php line 9818
          at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 13400
          at ShareErrorsFromSession->handle(object(Request), object(Closure)) in compiled.php line 9818
          at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 11852
          at StartSession->handle(object(Request), object(Closure)) in compiled.php line 9818
          at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 13146
          at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in compiled.php line 9818
          at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 13083
          at EncryptCookies->handle(object(Request), object(Closure)) in compiled.php line 9818
          at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 9803
          at Pipeline->then(object(Closure)) in compiled.php line 8096
          at Router->runRouteWithinStack(object(Route), object(Request)) in compiled.php line 8087
          at Router->dispatchToRoute(object(Request)) in compiled.php line 8078
          at Router->dispatch(object(Request)) in compiled.php line 2446
          at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) in Pipeline.php line 53
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 3171
          at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in compiled.php line 9818
          at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
          at Pipeline->Illuminate\Routing{closure}(object(Request)) in compiled.php line 9803
          at Pipeline->then(object(Closure)) in compiled.php line 2390
          at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2374
          at Kernel->handle(object(Request)) in index.php line 54
          at require_once('C:\xampp\htdocs\public\index.php') in server.php line 21

0 likes
3 replies
ahuggins's avatar
ahuggins
Best Answer
Level 51

you need to add the csrf_field() to your form

  <form method="POST" action="/test">
{{ csrf_field() }}
<label class = "u-pull-left" for="emailState">Initial State:</label>
               <select class = "u-full-width" id="emailState">
                        <option value='Enabled with email'>Enabled with email</option>
                        <option value='Enabled no email'>Enabled no email</option>
              </select>
     <input class="button-primary" type="submit" value="Submit">
    </form>
timishere's avatar

Wow... Thank you @ahuggins ! Sorry to bother you more, but why is it that I have to include the csrf_field?

ahuggins's avatar

CSRF stand for Cross Site Request Forgery...it protects you from someone trying to post to your routes and mess with your app. Basically Laravel automatically looks for this token that it generates, so any request that doesn't have the right token, it throws an error like the one you received.

1 like

Please or to participate in this conversation.