РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
955 of 1392 menu

Функция csrf_field

Функция csrf_field используется в Blade-шаблонах Laravel для создания скрытого поля ввода, содержащего CSRF-токен. Этот токен необходим для защиты веб-форм от CSRF-атак (межсайтовой подделки запроса). Функция возвращает HTML-код скрытого поля с именем '_token' и значением, равным текущему CSRF-токену сессии.

Синтаксис

{!! csrf_field() !!}

Пример

Давайте создадим форму для отправки данных с защитой от CSRF:

<form method="POST" action="/submit"> {!! csrf_field() !!} <input type="text" name="name"> <input type="submit" value="Submit"> </form>

Результат выполнения кода:

<form method="POST" action="/submit"> <input type="hidden" name="_token" value="abcdef1234567890"> <input type="text" name="name"> <input type="submit" value="Submit"> </form>

Пример

Альтернативный способ добавления CSRF-защиты с использованием директивы @csrf:

<form method="POST" action="/contact"> @csrf <input type="email" name="email"> <input type="text" name="message"> <input type="submit" value="Send"> </form>

Результат выполнения кода:

<form method="POST" action="/contact"> <input type="hidden" name="_token" value="xyz789abc123def"> <input type="email" name="email"> <input type="text" name="message"> <input type="submit" value="Send"> </form>

Пример

Проверка CSRF-токена в контроллере при обработке POST-запроса:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class FormController extends Controller { public function submit(Request $request) { $res = $request->all(); echo "Data received: " . $res['name']; } } ?>

Результат выполнения кода:

"Data received: John"

Важно отметить, что Laravel автоматически проверяет CSRF-токен для всех POST, PUT, PATCH и DELETE запросов. Если токен не совпадает, будет выброшено исключение TokenMismatchException.

Пример

Использование функции csrf_field вместе с методом method_field для PUT-запроса:

<form method="POST" action="/update/1"> {!! csrf_field() !!} {!! method_field('PUT') !!} <input type="text" name="title"> <input type="submit" value="Update"> </form>

Результат выполнения кода:

<form method="POST" action="/update/1"> <input type="hidden" name="_token" value="def456ghi789jkl"> <input type="hidden" name="_method" value="PUT"> <input type="text" name="title"> <input type="submit" value="Update"> </form>

Смотрите также

  • функция csrf_token,
    которая возвращает только значение CSRF-токена без HTML-тегов
  • функция method_field,
    которая генерирует поле для указания HTTP-метода
  • функция old,
    которая возвращает старое значение поля после валидации
  • функция asset,
    которая генерирует URL для статических ресурсов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить