Przewodnik po integracji hCaptcha z PHP
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.
Aby pobrać tajny klucz, kliknij kartę „Ustawienia".
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-captcha
do 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 success
zmienna 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
- Text-To-Speech przy użyciu Amazon Polly w PHP
- Jak dodać Twitter OAuth Login w witrynie za pomocą PHP
- Kompresuj obrazy dla strony internetowej za pomocą reSmush.it w PHP