Капча для Laravel: подробное руководство для версий с 5 по 9

Капча – это важный компонент веб-разработки, который помогает защитить веб-сайты от автоматических ботов и спама. В этой статье мы рассмотрим различные методы реализации Captcha в Laravel, охватывая версии с 5 по 9. Мы предоставим примеры кода для иллюстрации каждого метода, чтобы у вас было четкое понимание того, как интегрировать Captcha в ваши приложения Laravel.

  1. Пакет Laravel Captcha:
    Самый простой способ добавить функциональность Captcha в ваше приложение Laravel — использовать специальный пакет. Одним из популярных пакетов является «mews/captcha», который поддерживает несколько версий Laravel.

Для начала установите пакет через Composer:

composer require mews/captcha

Далее опубликуйте файл конфигурации пакета:

php artisan vendor:publish --provider="Mews\Captcha\CaptchaServiceProvider"

Наконец, настройте пакет в файле config/captcha.phpи добавьте поле Captcha в свои формы:

{!! captcha_image() !!}
<input type="text" id="captcha" name="captcha" required>
  1. Google reCAPTCHA v2:
    Google reCAPTCHA – это широко используемая служба Captcha, которая добавляет дополнительный уровень безопасности на ваш веб-сайт. Чтобы интегрировать его с Laravel, выполните следующие действия:
  • Зарегистрируйте свой сайт на сайте reCAPTCHA, чтобы получить ключ сайта и секретный ключ.
  • Установите пакет «google/recaptcha» через Composer:
composer require google/recaptcha
  • Настройте пакет в файле .env:
RECAPTCHA_SITE_KEY=your_site_key
RECAPTCHA_SECRET_KEY=your_secret_key
  • В представлении формы добавьте виджет reCAPTCHA:
{!! app('captcha')->render() !!}
  • Проверьте ответ пользователя на своем контроллере:
$this->validate($request, [
    'g-recaptcha-response' => 'required|captcha',
]);
  1. Пользовательская капча на основе изображений:
    Если вы предпочитаете собственную капчу на основе изображений, вы можете реализовать ее с помощью встроенных функций Laravel. Вот пример:
  • Создать новый CaptchaController:
php artisan make:controller CaptchaController
  • Сгенерировать случайную строку для изображения Captcha и сохранить ее в сеансе:
public function generateCaptchaImage()
{
    $value = Str::random(6);
    $path = storage_path('app/public/captcha/') . $value . '.png';
    $image = Image::make($path);
    $image->text($value, 120, 45, function ($font) {
        $font->file(public_path('fonts/captcha.ttf'));
        $font->size(30);
        $font->color('#000000');
        $font->align('center');
        $font->valign('middle');
    });
    $image->save($path);
    session(['captcha' => $value]);
    return response()->file($path);
}
  • Добавьте маршрут для изображения Captcha:
Route::get('captcha', 'CaptchaController@generateCaptchaImage')->name('captcha.image');
  • Отобразите изображение Captcha в форме:
<img src="{{ route('captcha.image') }}" alt="Captcha">
<input type="text" name="captcha" required>
  • Проверка введенных пользователем данных:
$this->validate($request, [
    'captcha' => 'required|in:' . session('captcha'),
]);

Добавление Captcha в ваши приложения Laravel имеет решающее значение для предотвращения автоматических атак ботов и обеспечения безопасности вашего веб-сайта. В этой статье мы рассмотрели три метода: использование пакета Laravel Captcha, интеграцию Google reCAPTCHA v2 и реализацию пользовательской Captcha на основе изображений. Следуя приведенным примерам кода, вы сможете легко реализовать функцию Captcha в версиях Laravel с 5 по 9, повысив безопасность вашего сайта.

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