В Laravel есть несколько способов загрузки капчи через Ajax. Один из наиболее популярных способов - использование библиотеки Google reCAPTCHA. Давайте разберемся, как ее использовать.
Шаг 1: Подготовка к использованию Google reCAPTCHA
1. Перейдите на https://www.google.com/recaptcha и зарегистрируйтесь, чтобы получить публичный и приватный ключи.
2. Отредактируйте файл .env
вашего проекта Laravel и добавьте ключи:
RECAPTCHA_SITE_KEY=ваш_публичный_ключ RECAPTCHA_SECRET_KEY=ваш_приватный_ключ
3. Установите библиотеку Google reCAPTCHA, запустив команду:
composer require google/recaptcha
Шаг 2: Создание маршрута и метода контроллера
1. Откройте файл routes/web.php
и добавьте маршрут для загрузки капчи:
Route::get('/captcha', 'CaptchaController@getCaptcha')->name('captcha.get');
2. Создайте контроллер CaptchaController
с помощью команды:
php artisan make:controller CaptchaController
3. Откройте файл app/Http/Controllers/CaptchaController.php
и добавьте метод getCaptcha
, который будет отображать капчу:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use ReCaptchaReCaptcha; class CaptchaController extends Controller { public function getCaptcha() { $siteKey = config('recaptcha.site_key'); return response()->json([ 'siteKey' => $siteKey, ]); } }
Шаг 3: Создание JavaScript-кода и представления
1. Создайте файл captcha.js
и поместите в него следующий код:
$(document).ready(function() { // Загрузка капчи $.get('/captcha', function(data) { grecaptcha.render('captcha', { 'sitekey': data.siteKey, }); }); });
2. Создайте представление captcha.blade.php
и добавьте следующий код:
<div id="captcha"></div> @push('scripts') <script src="https://www.google.com/recaptcha/api.js?onload=onloadCaptchaCallback&render=explicit" async defer></script> <script src="{{ asset('js/captcha.js') }}"></script> @endpush
Шаг 4: Вставка представления в вашу форму
1. Откройте файл с формой, в которой вам нужно отобразить капчу.
2. Вставьте следующий код в тег формы:
@include('captcha')
Шаг 5: Проверка капчи на сервере
1. Откройте контроллер, обрабатывающий отправку формы, и добавьте следующий код, чтобы проверить капчу:
use ReCaptchaReCaptcha; class FormController extends Controller { public function submitForm(Request $request) { $recaptcha = new ReCaptcha(config('recaptcha.secret_key')); $response = $recaptcha->verify($request->input('g-recaptcha-response'), $request->ip()); if (!$response->isSuccess()) { // Некорректная капча } else { // Капча прошла успешно } } }
В результате выполнения этих шагов вы сможете загрузить капчу через Ajax в Laravel, используя Google reCAPTCHA. Убедитесь, что вы настроили свои ключи и подключили все необходимые библиотеки.