...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak dodać Nie jestem robotem captcha w Laravel Forms

25

Czy chcesz dodać Google reCAPTCHA do swoich formularzy Laravel? Google reCAPTCHA pomaga chronić formularze przed botami, które w rezultacie chronią nas przed spamem. Jeśli nie chronisz swoich formularzy, prawdopodobnie dostajesz mnóstwo spamu do bazy danych.

W chwili pisania tego tekstu Google udostępnia 2 wersje reCAPTCHA – v2 i v3. ReCAPTCHA v3 umieszcza ikonę w prawym dolnym rogu twoich stron i weryfikuje żądania za pomocą wyniku. Z drugiej strony reCAPTCHA v2 weryfikuje żądania za pomocą wyzwania. W tym artykule przyjrzymy się reCAPTCHA v2 i zweryfikujemy żądania za pomocą pola wyboru „Nie jestem robotem".

Dlaczego potrzebujesz Google reCAPTCHA?

Bot internetowy to system, który uruchamia automatyczne skrypty w Internecie. Ich celem jest wysyłanie spamu do bazy danych z formularzy witryn internetowych. Zasadniczo ten system działa znacznie szybciej niż sami ludzie. Zawsze chcemy, aby w kontakt z naszymi formularzami internetowymi wchodził prawdziwy człowiek, a nie bot.

Dodając Google reCAPTCHA, możemy chronić formularze naszej witryny przed tymi botami internetowymi, ich spamem i nadużyciami. Zautomatyzowany system nie jest w stanie sprostać wyzwaniu postawionemu przez reCAPTCHA. Twój formularz nie zostanie przesłany, dopóki wyzwanie nie zostanie rozwiązane. Człowiek może łatwo rozwiązać te wyzwania i złożyć formularz.

Skonfiguruj Google reCAPTCHA na swojej stronie Laravel

Aby rozpocząć, musisz najpierw zarejestrować witrynę w Google. Wybierz opcję reCAPTCHA v2 i pole wyboru „Nie jestem robotem”, jak pokazano na zrzucie ekranu poniżej.

Jak dodać Nie jestem robotem captcha w Laravel Forms

Po zarejestrowaniu strony skopiuj klucz strony i tajny klucz, których będziemy potrzebować za chwilę.

Musimy dodać reCAPTCHA w projekcie Laravel. Do wykonania zadania użyję biblioteki anhskohbo/no-captcha.

Otwórz wiersz poleceń w katalogu głównym swojego projektu i uruchom polecenie:

composer require anhskohbo/no-captcha

Otwórz plik ‘config/app.php’ i dodaj poniższy wiersz do tablicy ‘providers’.

AnhskohboNoCaptchaNoCaptchaServiceProvider::class,

Dodaj alias klasy do tablicy aliasów:

'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,

Opublikuj plik konfiguracyjny za pomocą polecenia:

php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"

Następnie otwórz .envplik i określ klucze reCAPTCHA w następujący sposób.

NOCAPTCHA_SECRET=secret-key
NOCAPTCHA_SITEKEY=site-key

Pamiętaj, aby zastąpić symbole zastępcze tajny klucz, klucz witryny rzeczywistymi wartościami.

Wyczyść pamięć podręczną konfiguracji, uruchamiając poniższe polecenie.

php artisan config:clear 

Dodanie Google reCAPTCHA do formularza w Laravel

Na tym etapie kończysz podstawową konfigurację wymaganą do reCAPTCHA. Teraz napiszmy trochę kodu i zróbmy go w akcji.

Otwórz plik widoku, w którym chcesz dodać pole wyboru Nie jestem robotem. W górnej części pliku blade zainicjuj źródło JS w następujący sposób:

{!! NoCaptcha::renderJs() !!}

Dodaj poniższą jednowierszową instrukcję w miejscu, w którym chcesz wyświetlić pole wyboru reCAPTCHA. Najlepsze miejsce jest przed przyciskiem przesyłania.

{!! NoCaptcha::display() !!}

Jako przykład stwórzmy formularz z kilkoma polami i dodajmy do niego reCAPTCHA za pomocą poniższego kodu.

{!! NoCaptcha::renderJs() !!}
 
@if ($errors->has('g-recaptcha-response'))
    <span class="help-block">
        <strong>{{ $errors->first('g-recaptcha-response') }}</strong>
    </span>
@endif
<form action="{{ url('ROUTE_HERE') }}" method="post">
    <p>Name: <input type="text" name="fullname" /></p>
    <p>Email: <input type="email" name="email" /></p>
    <p>Message: <textarea name="message"></textarea></p>
    {!! NoCaptcha::display() !!}
    {{ csrf_field() }}
    <p><input type="submit" name="submit" value="Submit" /></p>
</form>

Po dodaniu powyższych linii zobaczysz, że reCAPTCHA pojawi się, jak pokazano na poniższym zrzucie ekranu.

Jak dodać Nie jestem robotem captcha w Laravel Forms

W powyższym kodzie dodałem również kod, który wyświetla błąd, jeśli wystąpi podczas walidacji reCAPTCHA.

Teraz musimy zweryfikować reCAPTCHA podczas przesyłania formularza. Aby to osiągnąć, użyję Laravel Validator w następujący sposób.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
 
class ContactController extends Controller
{
    ...
    ...
    public function store(Request $request)
    {
        $messages = [
            'g-recaptcha-response.required' => 'You must check the reCAPTCHA.',
            'g-recaptcha-response.captcha' => 'Captcha error! try again later or contact site admin.',
        ];
 
        $validator = Validator::make($request->all(), [
            'g-recaptcha-response' => 'required|captcha'
        ], $messages);
 
        if ($validator->fails()) {
            return redirect('ROUTE_HERE')
                        ->withErrors($validator)
                        ->withInput();
        }
 
        // process the form
    }   
}

Tutaj umieściłem fasadę ‘Validator’ i walidację reCAPTCHA w metodzie ‘store’. Jeśli nie uda się zweryfikować, zgłosi błąd.

Otóż ​​to! Pomyślnie dodałeś reCAPTCHA v2 z polem wyboru Nie jestem robotem do formularza Laravel. Teraz Twój formularz nie zostanie przesłany, dopóki odwiedzający nie rozwiąże wyzwania reCAPTCHA.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów