Lavavel 5.5 отправка данных через форму

248
06 октября 2017, 18:35
@extends('default.index')
@section('sidebar')
    <div class="col-md-9">
    <form method="post" action="{{ route('contact') }}">
        {{ csrf_field() }}
      <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" id="name" name="name" value="" placeholder="Jane Doe">
      </div>
      <div class="form-group">
        <label for="email">Email address</label>
        <input type="email" class="form-control" id="email" value="" name="email" placeholder="Email">
      </div>
      <div class="form-group">
        <label for="site">Site</label>
        <input type="text" class="form-control" id="site" value="" name="site" placeholder="Site">
      </div>
      <div class="form-group">
        <label for="text">Text</label>
        <textarea class="form-control" id="text" name="text" rows="3"></textarea>
      </div>
      <button type="submit" class="btn btn-primary">Submit</button>
    </form>
</div>  
@endsection

Форма ссылается на маршрут:

Route::match(['get', 'post'], '/contact', ['uses'=>'contactController@show', 'as'=>'contact', 'middleware'=>'contactMiddle']);

При обработке контроллером производится вывод на экран содержимого запроса:

class contactController extends Controller
{
    function show (Request $request) {
        print_r($request->all());
        return view('default.contact');
    }
}

**Но, при отправке запроса выводится сообщение: **

The page has expired due to inactivity. Please refresh and try again.

Замена session driver на array (по умолчанию стоит file) результатов не дала.

Answer 1

Скорее всего Вы забыли включить в форму скрытый Input который содержит CSRF-Token, который защищает от подделки межсайтовых запросов.

Попробуйте добавить в форму отправки запроса функцию {{ csrf_field() }} которая cгенерирует данный input

<form method="POST" action="/profile">
  {{ csrf_field() }}
  ...
</form>
Answer 2

Обычно такая ошибка бывает когда выходит время жизни сессии или куки или у вас запрещено создание кук на данной странице, проверьте сначала время жизни сессии в файле config/session.php:

'lifetime' => Ваше значение в минутах.

Но раз вы говорите что отправляете сразу же тогда проблема что отключены куки, проверьте через консоль разработчика или расширения для Chrome к примеру наличия куки - laravel_session и XSRF-TOKEN.

Лучше проверьте сразу в анонимном режиме, но я склоняюсь к тому что нет кук.

Answer 3

В итоге, проблема с выводом данной ошибки решилась путем добавления данного маршрута в качестве исключения в класс, находящийся по адресу:

app/Http/Middleware/VerifyCsrfToken.php

protected $except = [
    'route'
];
READ ALSO
Как записать строку в файл?

Как записать строку в файл?

Доброго дня друзьяСел за PHP и немного не понял, почему при следующем коде:

190
Оповещение о доступности сайта

Оповещение о доступности сайта

Хостер собирается проводить работы на веб-сервере, будет отключение на определенный периодКак реализовать возможность оповещения о том,...

161
Как заполнить шаблон xlsx, используя PHPExcel

Как заполнить шаблон xlsx, используя PHPExcel

Есть множество различныхxlsx шаблонов

219