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

Метод tooManyAttempts

Метод tooManyAttempts применяется к экземпляру класса RateLimiter и возвращает true, если количество попыток для указанного ключа достигло или превысило максимально допустимое значение. Первым параметром передаётся ключ (строка), вторым - максимальное количество попыток (целое число). Если лимит превышен, метод возвращает true, в противном случае - false.

Синтаксис

<?php use Illuminate\Support\Facades\RateLimiter; $result = RateLimiter::tooManyAttempts($key, $maxAttempts); ?>

Пример

Давайте проверим, превысил ли пользователь с id равным 1 лимит в 5 попыток входа:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; class LoginController extends Controller { public function attempt() { $userId = 1; $key = 'login_attempts_user_' . $userId; $maxAttempts = 5; if (RateLimiter::tooManyAttempts($key, $maxAttempts)) { echo "Too many login attempts. Please try again later."; } else { echo "Login attempt allowed."; } } } ?>

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

"Too many login attempts. Please try again later."

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

"Login attempt allowed."

Пример

Давайте используем метод tooManyAttempts вместе с hit для учёта попыток и проверки лимита для API-запросов:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; class ApiController extends Controller { public function request($ip) { $key = 'api_requests_' . $ip; $maxAttempts = 10; if (RateLimiter::tooManyAttempts($key, $maxAttempts)) { echo "Rate limit exceeded. Please wait."; return; } RateLimiter::hit($key, 60); echo "Request processed successfully."; } } ?>

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

"Request processed successfully."

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

"Rate limit exceeded. Please wait."

Пример

Давайте проверим превышение лимита для разных операций с использованием условного оператора:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; class UserController extends Controller { public function action($type, $userId) { $key = $type . '_' . $userId; $maxAttempts = 3; if (RateLimiter::tooManyAttempts($key, $maxAttempts)) { echo "Action blocked. Too many attempts."; return; } RateLimiter::hit($key, 30); echo "Action performed successfully."; } } ?>

Результат выполнения кода при вызове action('login', 5) в третий раз:

"Action blocked. Too many attempts."

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

  • метод attempt,
    который выполняет действие с учётом лимита попыток
  • метод hit,
    который увеличивает счётчик попыток для ключа
  • метод remaining,
    который возвращает оставшееся количество попыток
  • метод clear,
    который сбрасывает счётчик попыток для ключа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить