Un guide sur l’intégration de hCaptcha avec PHP
Récemment, l’un de nos lecteurs a posé des questions sur l’intégration de hCapctha sur un site Web. Le hCaptcha est une belle alternative au service Google reCAPTCHA. Dans cet article, nous étudions comment ajouter hCapctha avec PHP sur leur site Web.
Il est toujours recommandé d’avoir un captcha sur les formulaires du site. Les spams sont vraiment mauvais et cela vous frustre. Vous ne souhaitez jamais perdre votre temps précieux à effacer des commentaires faux/inutiles.
En utilisant hCaptcha, l’utilisateur doit résoudre les défis avant de soumettre un formulaire. Et votre formulaire ne devrait continuer que si le captcha réussit sa vérification. En intégrant le captcha, il évite à une tonne de spams d’entrer dans la base de données et votre boîte de réception. Parce que seul un vrai humain peut résoudre les énigmes du captcha.
Cela dit, jetons un coup d’œil à l’intégration de hCaptcha avec PHP. Il nécessite de vérifier la réponse hCaptcha côté serveur. Nous écrirons le code côté serveur en utilisant à la fois cURL et la bibliothèque Guzzle. L’utilisateur peut utiliser n’importe lequel d’entre eux.
Commencer
Vous devez d’abord créer un compte avec le service hCaptcha. Contrairement à Google reCAPTCHA, vous pouvez utiliser les clés hCaptcha directement sur votre site Web. Vous n’avez pas besoin d’enregistrer votre domaine avec eux.
Mais si vous le souhaitez, vous pouvez ajouter votre domaine en cliquant sur le bouton Nouveau site. Cela ouvrira un formulaire dans lequel vous devrez transmettre votre domaine au champ Hostnames.
Ensuite, cliquez sur l’icône des paramètres dans le tableau et récupérez la clé de votre site.
Pour récupérer la clé secrète, cliquez sur l’onglet "Paramètres".
Une fois que vous êtes prêt avec les clés, il y a 2 étapes à suivre. Tout d’abord, ajoutez le hCaptcha sur votre formulaire. Et puis validez la réponse captcha côté serveur.
Créons un formulaire simple et ajoutons-y hCaptcha comme suit.
<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>
Ici, nous avons inclus la bibliothèque JavaScript de hCaptcha et ajouté une classe h-captcha
au conteneur div. Vous devez également transmettre votre clé de site à l’attribut de données data-sitekey.
Rechargez la page et vous devriez maintenant voir la case à cocher hCaptcha ajoutée au formulaire. Voyons maintenant comment valider la réponse captcha.
Valider la réponse hCaptcha à l’aide de cURL
Lorsqu’un utilisateur soumet un formulaire avec un captcha, vous devez vérifier la réponse captcha côté serveur. Pour vérification, vous devez envoyer des requêtes POST au point de terminaison du hCaptcha https://hcaptcha.com/siteverify
. Dans la requête POST, les paramètres sont la clé secrète et h-captcha-response (qui provient du formulaire soumis).
En PHP, nous pouvons utiliser à la fois cURL et Guzzle pour interagir avec le serveur externe. Lors de l’envoi de requêtes via cURL, assurez-vous que l’extension cURL est activée sur votre serveur.
En cas de cURL, votre code sera le suivant pour vérifier la réponse 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.';
}
}
?>
Remplacez l’espace réservé par la valeur réelle. Dans le code ci-dessus, nous vérifions si la success
variable est vraie dans la réponse. Si c’est vrai, le formulaire peut continuer en toute sécurité.
Valider la réponse hCaptcha à l’aide de Guzzle
Guzzle est une alternative à cURL. Il vous fournit un code beaucoup plus propre par rapport à cURL. Si vous utilisez Guzzle, vous n’avez pas besoin d’avoir une extension cURL sur votre serveur.
Pour commencer, vous devez d’abord installer la bibliothèque Guzzle dans votre projet. Exécutez la commande ci-dessous pour l’installation d’une bibliothèque.
composer require guzzlehttp/guzzle
Après cela, écrivez le code ci-dessous qui vérifiera la réponse hCAPTCHA à l’aide de la bibliothèque 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.';
}
}
?>
J’espère que vous comprenez l’intégration de hCaptcha avec PHP en utilisant cURL et Guzzle. S’il vous plaît partager vos pensées et suggestions dans la section commentaires ci-dessous.
Articles Liés
- Text-To-Speech utilisant Amazon Polly en PHP
- Comment ajouter une connexion Twitter OAuth sur un site Web avec PHP
- Compresser des images pour un site Web à l’aide de reSmush.it en PHP