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

TrimStrings

Middleware TrimStrings входит в стандартную поставку Laravel и применяется ко всем входящим запросам. Его основная задача - автоматически обрезать пробельные символы (пробелы, табуляцию, переводы строк) в начале и конце строковых полей запроса. Это помогает предотвратить ошибки, связанные с случайными пробелами в данных пользователя, и обеспечивает более чистые данные для дальнейшей обработки. По умолчанию middleware обрабатывает все строковые параметры запроса, включая поля формы, JSON-данные и параметры строки запроса.

Синтаксис

<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; class TrimStrings extends Middleware { protected $except = [ 'password', 'password_confirmation', ]; } ?>

Параметр $except определяет массив полей, которые не будут обработаны middleware. Это полезно для полей, где пробелы имеют значение, например, для паролей или текстовых данных, где пробелы являются значимыми символами. По умолчанию из обработки исключены поля 'password' и 'password_confirmation'.

Пример

Рассмотрим стандартное поведение TrimStrings при отправке формы регистрации:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; class UserController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string', 'email' => 'required|email', 'password' => 'required|min:8', ]); $user = User::create($validated); $res = $user->only(['name', 'email']); echo json_encode($res); } } ?>

Отправим POST-запрос с пробелами в данных:

{ "name": " John Doe ", "email": " john@example.com ", "password": "secret123" }

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

{"name":"John Doe","email":"john@example.com"}

Как видим, пробелы были удалены из полей 'name' и 'email', но поле 'password' осталось без изменений, так как оно исключено из обработки.

Пример

Добавим собственное поле в исключения для обработки параметра с пробелами:

<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; class TrimStrings extends Middleware { protected $except = [ 'password', 'password_confirmation', 'code', ]; } ?>

Теперь поле 'code' также будет пропущено через обработку. Это может быть полезно, когда в поле 'code' могут содержаться значимые пробелы, например, в коде активации или идентификаторе.

Пример

Выведем все обработанные данные запроса после применения TrimStrings:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function index(Request $request) { $res = $request->all(); foreach ($res as $key => $value) { echo $key . ': "' . $value . '"' . PHP_EOL; } } } ?>

Отправим запрос с различными типами пробелов:

{ "text": " Hello World ", "message": "\tTest\t", "code": " 12345 ", "password": " mypassword " }

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

text: "Hello World" message: "Test" code: " 12345 " password: " mypassword "

Обратите внимание, что поля 'text' и 'message' были очищены от пробелов, поле 'code' пропущено через обработку (в нем остались пробелы), а поле 'password' также осталось без изменений, так как оно исключено по умолчанию.

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

  • мидлварь ValidateCsrfToken,
    которая проверяет CSRF-токен запроса
  • мидлварь EncryptCookies,
    которая шифрует и дешифрует куки
  • мидлварь SubstituteBindings,
    которая заменяет маршрутные привязки моделей
  • мидлварь signed,
    которая проверяет подпись URL-адреса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить