En guide om hCaptcha-integration med PHP
Nyligen frågade en av våra läsare om hCapctha-integration på en webbplats. Den hCaptcha är ett trevligt alternativ till Googles reCAPTCHA tjänsten. I den här artikeln studerar vi hur man kan lägga till hCapctha med PHP på deras webbplats.
Det rekommenderas alltid att ha en captcha på webbplatsens formulär. Spammarna är riktigt dåliga och det frustrerar dig bara. Du vill aldrig slösa bort din värdefulla tid på att rensa falska / onödiga kommentarer.
Med hCaptcha måste användaren lösa utmaningarna innan han skickar ett formulär. Och ditt formulär ska bara fortsätta om captcha klarar verifieringen. Genom att integrera captcha sparar det massor av skräppost från att komma in i databasen och din inkorg. För att bara en riktig människa kan lösa captcha-pussel.
Med detta sagt, låt oss ta en titt på att integrera hCaptcha med PHP. Det kräver att verifiera hCaptcha-svaret på serversidan. Vi skriver koden på serversidan med både cURL och Guzzle-biblioteket. Användaren kan använda någon av dem.
Komma igång
Du måste först skapa ett konto med hCaptcha- tjänsten. Till skillnad från Google reCAPTCHA kan du använda hCaptcha-nycklar direkt på din webbplats. Du behöver inte registrera din domän hos dem.
Men om du vill kan du lägga till din domän genom att klicka på Ny webbplats- knappen. Det öppnar ett formulär där du måste skicka din domän till fältet Värdnamn.
Klicka sedan på inställningsikonen från tabellen och ta tag i din webbplatsnyckel.
För att ta tag i den hemliga nyckeln, klicka på fliken "Inställningar".
När du är redo med nycklar krävs två steg att följa. Lägg först till hCaptcha i ditt formulär. Och validera sedan captcha-svaret på serversidan.
Låt oss skapa en enkel form och lägga till hCaptcha till den enligt följande.
<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>
Här har vi inkluderat hCaptchas JavaScript-bibliotek och lagt till en klass h-captcha
i div-behållaren. Du måste också skicka din webbplatsnyckel till dataattributet data-sitekey.
Ladda om sidan så visas kryssrutan hCaptcha som läggs till i formuläret. Låt oss nu se hur man validerar captcha-svaret.
Validera hCaptcha-svar med hjälp av cURL
När en användare skickar in ett formulär tillsammans med en captcha måste du verifiera captcha-svaret på serversidan. För verifiering måste du skicka POST-förfrågningar till hCaptchas slutpunkt https://hcaptcha.com/siteverify
. I POST-begäran är parametrarna hemlig nyckel och h-captcha-svar (som kommer från det inlämnade formuläret).
I PHP kan vi använda både cURL och Guzzle för att interagera med den externa servern. När du skickar förfrågningar via cURL, se till att cURL-tillägget är aktiverat på din server.
I händelse av cURL kommer din kod att vara följande för att verifiera hCaptcha-svaret.
<?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.';
}
}
?>
Ersätt platshållaren med det verkliga värdet. I koden ovan kontrollerar vi om success
variabeln är sant i svaret. Om det är sant är formuläret säkert att fortsätta.
Validera hCaptcha-svar med hjälp av Guzzle
Guzzle är ett alternativ till cURL. Det ger dig mycket renare kod jämfört med cURL. Om du använder Guzzle behöver du inte ha ett cURL-tillägg på din server.
För att komma igång måste du först installera Guzzle-biblioteket i ditt projekt. Kör kommandot nedan för installation av ett bibliotek.
composer require guzzlehttp/guzzle
Efter detta skriver du koden nedan som kommer att verifiera hCAPTCHA-svaret med Guzzle-biblioteket.
<?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.';
}
}
?>
Jag hoppas att du förstår hCaptcha-integrationen med PHP med hjälp av cURL och Guzzle. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Text-till-tal med Amazon Polly i PHP
- Hur man lägger till Twitter OAuth-inloggning på webbplatsen med PHP
- Komprimera bilder för webbplatsen med reSmush.it i PHP