Una guida all’integrazione di hCaptcha con PHP
Recentemente uno dei nostri lettori ha chiesto informazioni sull’integrazione di hCapctha su un sito web. L’ hCaptcha è una bella alternativa al servizio Google reCAPTCHA. In questo articolo, studiamo come si può aggiungere hCapctha con PHP sul proprio sito web.
Si consiglia sempre di avere un captcha nei moduli del sito web. Gli spam sono davvero brutti e ti frustrano. Non vorrai mai sprecare il tuo tempo prezioso per cancellare commenti falsi/non necessari.
Utilizzando hCaptcha, l’utente deve risolvere le sfide prima di inviare un modulo. E il tuo modulo dovrebbe procedere solo se il captcha supera la sua verifica. Integrando captcha, evita che un sacco di spam entrino nel database e nella tua casella di posta. Perché solo un vero umano può risolvere gli enigmi del captcha.
Detto questo, diamo un’occhiata all’integrazione di hCaptcha con PHP. Richiede di verificare la risposta hCaptcha sul lato server. Scriveremo il codice lato server utilizzando sia cURL che la libreria Guzzle. L’utente può utilizzarne uno qualsiasi.
Iniziare
Devi prima creare un account con il servizio hCaptcha. A differenza di Google reCAPTCHA, puoi utilizzare le chiavi hCaptcha direttamente sul tuo sito web. Non è necessario registrare il tuo dominio con loro.
Ma se lo desideri, puoi aggiungere il tuo dominio facendo clic sul pulsante +Nuovo sito. Si aprirà un modulo in cui devi passare il tuo dominio al campo Hostnames.
Quindi, fai clic sull’icona delle impostazioni dalla tabella e prendi la chiave del tuo sito.
Per ottenere la chiave segreta, fai clic sulla scheda "Impostazioni".
Una volta che sei pronto con le chiavi, sono necessari 2 passaggi da seguire. Innanzitutto, aggiungi hCaptcha al tuo modulo. E poi convalidare la risposta captcha sul lato server.
Creiamo un modulo semplice e aggiungiamo hCaptcha come segue.
<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>
Qui abbiamo incluso la libreria JavaScript di hCaptcha e aggiunto una classe h-captcha
al contenitore div. Devi anche passare la tua chiave del sito all’attributo dei dati data-sitekey.
Ricarica la pagina e ora dovresti vedere la casella di controllo hCaptcha aggiunta al modulo. Vediamo ora come validare la risposta captcha.
Convalida la risposta hCaptcha utilizzando cURL
Quando un utente invia un modulo insieme a un captcha, è necessario verificare la risposta captcha sul lato server. Per la verifica, devi inviare richieste POST all’endpoint di hCaptcha https://hcaptcha.com/siteverify
. Nella richiesta POST, i parametri sono la chiave segreta e h-captcha-response (che proviene dal modulo inviato).
In PHP, possiamo usare sia cURL che Guzzle per interagire con il server esterno. Durante l’invio di richieste tramite cURL, assicurati che l’estensione cURL sia abilitata sul tuo server.
In caso di cURL, il tuo codice sarà il seguente per verificare la risposta 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.';
}
}
?>
Sostituisci il segnaposto con il valore effettivo. Nel codice sopra, stiamo controllando se la success
variabile è vera nella risposta. Se è vero, il modulo è sicuro per procedere.
Convalida la risposta hCaptcha utilizzando Guzzle
Guzzle è un’alternativa a cURL. Ti fornisce un codice molto più pulito rispetto a cURL. Se stai usando Guzzle, non hai bisogno di avere un’estensione cURL sul tuo server.
Per iniziare, devi prima installare la libreria Guzzle nel tuo progetto. Eseguire il comando seguente per l’installazione di una libreria.
composer require guzzlehttp/guzzle
Successivamente, scrivi il codice sottostante che verificherà la risposta hCAPTCHA utilizzando la libreria 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.';
}
}
?>
Spero che tu capisca l’integrazione di hCaptcha con PHP usando cURL e Guzzle. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Sintesi vocale utilizzando Amazon Polly in PHP
- Come aggiungere l’accesso OAuth a Twitter nel sito Web con PHP
- Comprimi le immagini per il sito web utilizzando reSmush.it in PHP