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

Przewodnik po integracji hCaptcha z PHP

32

Ostatnio jeden z naszych czytelników zapytał o integrację hCapctha na stronie internetowej. HCaptcha jest miłą alternatywą do usługi Google reCAPTCHA. W tym artykule dowiemy się, jak można dodać hCapctha z PHP na swojej stronie internetowej.

Zawsze zaleca się umieszczanie captcha na formularzach na stronie. Spamy są naprawdę złe i po prostu Cię frustrują. Nigdy nie chcesz tracić cennego czasu na usuwanie fałszywych/niepotrzebnych komentarzy.

Korzystając z hCaptcha, użytkownik musi rozwiązać wyzwania przed przesłaniem formularza. A Twój formularz powinien działać tylko wtedy, gdy captcha przejdzie jego weryfikację. Integrując captcha, oszczędza mnóstwo spamu przed wejściem do bazy danych i skrzynki odbiorczej. Ponieważ tylko prawdziwy człowiek może rozwiązać zagadkę captcha.

Powiedziawszy to, przyjrzyjmy się integracji hCaptcha z PHP. Wymaga weryfikacji odpowiedzi hCaptcha po stronie serwera. Napiszemy kod po stronie serwera, używając zarówno cURL, jak i biblioteki Guzzle. Użytkownik może skorzystać z dowolnego z nich.

Pierwsze kroki

Musisz najpierw założyć konto w usłudze hCaptcha. W przeciwieństwie do Google reCAPTCHA, możesz używać kluczy hCaptcha bezpośrednio w swojej witrynie. Nie musisz rejestrować u nich swojej domeny.

Ale jeśli chcesz, możesz dodać swoją domenę, klikając przycisk +Nowa witryna. Otworzy się formularz, w którym musisz przekazać swoją domenę do pola Hostnames.

Następnie kliknij ikonę ustawień z tabeli i pobierz klucz witryny.

Przewodnik po integracji hCaptcha z PHP

Aby pobrać tajny klucz, kliknij kartę „Ustawienia".

Przewodnik po integracji hCaptcha z PHP

Gdy będziesz gotowy z kluczami, musisz wykonać 2 kroki. Najpierw dodaj hCaptcha do swojego formularza. A następnie sprawdź poprawność odpowiedzi captcha po stronie serwera.

Stwórzmy prosty formularz i dodajmy do niego hCaptcha w następujący sposób.

<form action="" method="POST">
    <input type="text" name="email" placeholder="Email" />
    <input type="password" name="password" placeholder="Password" />
    <div class="h-captcha" data-sitekey="YOUR_SITE_KEY"></div>
    <br />
    <input type="submit" name="submit" value="Submit" />
</form>
<script src="https://hcaptcha.com/1/api.js" async defer></script>

Tutaj dodaliśmy bibliotekę JavaScript hCaptcha i dodaliśmy klasę h-captchado kontenera div. Musisz też przekazać klucz witryny do atrybutu data data-sitekey.

Załaduj ponownie stronę i powinieneś teraz zobaczyć pole wyboru hCaptcha dodane do formularza. Zobaczmy teraz, jak zweryfikować odpowiedź captcha.

Sprawdź odpowiedź hCaptcha za pomocą cURL

Gdy użytkownik przesyła formularz wraz z captcha, musisz zweryfikować odpowiedź captcha po stronie serwera. W celu weryfikacji musisz wysłać żądania POST do punktu końcowego hCaptcha https://hcaptcha.com/siteverify. W żądaniu POST parametrami są tajny klucz i h-captcha-response (pochodzące z przesłanego formularza).

W PHP możemy używać zarówno cURL, jak i Guzzle do interakcji z zewnętrznym serwerem. Podczas wysyłania żądań przez cURL upewnij się, że rozszerzenie cURL jest włączone na twoim serwerze.

W przypadku cURL Twój kod będzie wyglądał następująco, aby zweryfikować odpowiedź hCaptcha.

<?php
if (isset($_POST['submit'])) {
    $data = array(
        'secret' => "YOUR_SECRET_KEY",
        'response' => $_POST['h-captcha-response']
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://hcaptcha.com/siteverify");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    $responseData = json_decode($response);
    if($responseData->success) {
        // proceed the form
    } else {
        echo 'Robot verification failed, please try again.';
    }
}
?>

Zastąp symbol zastępczy rzeczywistą wartością. W powyższym kodzie sprawdzamy, czy successzmienna jest prawdziwa w odpowiedzi. Jeśli to prawda, formularz można bezpiecznie kontynuować.

Sprawdź odpowiedź hCaptcha za pomocą Guzzle

Guzzle jest alternatywą dla cURL. Zapewnia znacznie czystszy kod w porównaniu do cURL. Jeśli używasz Guzzle, nie musisz mieć rozszerzenia cURL na swoim serwerze.

Aby rozpocząć, musisz najpierw zainstalować bibliotekę Guzzle w swoim projekcie. Uruchom poniższe polecenie, aby zainstalować bibliotekę.

composer require guzzlehttp/guzzle

Następnie napisz poniższy kod, który zweryfikuje odpowiedź hCAPTCHA za pomocą biblioteki Guzzle.

<?php
require_once 'vendor/autoload.php';
 
use GuzzleHttpClient;
 
if (isset($_POST['submit'])) {
 
    $client = new Client([
        // Base URI is used with relative requests
        'base_uri' => 'https://hcaptcha.com',
    ]);
      
    $response = $client->request('POST', '/siteverify', [
       'form_params' => [
            'secret' => "YOUR_SECRET_KEY",
            'response' => $_POST['h-captcha-response']
       ]
    ]);
 
    $body = $response->getBody();
    $arr_body = json_decode($body);
    if($arr_body->success) {
        // proceed the form
    } else {
        echo 'Robot verification failed, please try again.';
    }
}
?>

Mam nadzieję, że rozumiesz integrację hCaptcha z PHP za pomocą cURL i Guzzle. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.

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