Eine Anleitung zur hCaptcha-Integration mit PHP
Kürzlich hat einer unserer Leser nach der Integration von hCapctha auf einer Website gefragt. Das hCaptcha ist eine schöne Alternative zum Google reCAPTCHA-Dienst. In diesem Artikel untersuchen wir, wie man hCapctha mit PHP auf seiner Website hinzufügen kann.
Es wird immer empfohlen, ein Captcha auf den Website-Formularen zu verwenden. Die Spams sind wirklich schlecht und es frustriert Sie nur. Sie möchten niemals Ihre wertvolle Zeit damit verschwenden, gefälschte/unnötige Kommentare zu löschen.
Mit hCaptcha muss der Benutzer die Herausforderungen lösen, bevor er ein Formular abschickt. Und Ihr Formular sollte nur fortgesetzt werden, wenn das Captcha seine Überprüfung besteht. Durch die Integration von Captcha erspart es eine Menge Spams vor dem Eindringen in die Datenbank und Ihren Posteingang. Denn nur ein echter Mensch kann die Rätsel von Captcha lösen.
Lassen Sie uns jedoch einen Blick auf die Integration von hCaptcha mit PHP werfen. Es erfordert, die hCaptcha-Antwort auf der Serverseite zu überprüfen. Wir werden den serverseitigen Code sowohl mit cURL als auch mit der Guzzle-Bibliothek schreiben. Der Benutzer kann jeden von ihnen verwenden.
Einstieg
Sie müssen zuerst ein Konto beim hCaptcha- Dienst erstellen. Im Gegensatz zu Google reCAPTCHA können Sie hCaptcha-Schlüssel direkt auf Ihrer Website verwenden. Sie müssen Ihre Domain bei ihnen nicht registrieren.
Wenn Sie möchten, können Sie Ihre Domain jedoch hinzufügen, indem Sie auf die Schaltfläche +Neue Site klicken. Es öffnet sich ein Formular, in dem Sie Ihre Domain an das Feld Hostnamen übergeben müssen.
Klicken Sie als Nächstes auf das Einstellungssymbol in der Tabelle und nehmen Sie Ihren Site-Schlüssel.
Um den geheimen Schlüssel zu erhalten, klicken Sie auf die Registerkarte "Einstellungen".
Sobald Sie mit den Schlüsseln fertig sind, müssen Sie 2 Schritte ausführen. Fügen Sie zunächst das hCaptcha in Ihr Formular ein. Überprüfen Sie dann die Captcha-Antwort auf der Serverseite.
Lassen Sie uns ein einfaches Formular erstellen und hCaptcha wie folgt hinzufügen.
<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>
Hier haben wir die JavaScript-Bibliothek von hCaptcha eingefügt h-captcha
und dem div-Container eine Klasse hinzugefügt. Außerdem müssen Sie Ihren Site-Schlüssel an das Datenattribut data-sitekey übergeben.
Laden Sie die Seite neu und Sie sollten jetzt das Kontrollkästchen hCaptcha zum Formular hinzugefügt sehen. Sehen wir uns nun an, wie Sie die Captcha-Antwort validieren.
Überprüfen Sie die hCaptcha-Antwort mit cURL
Wenn ein Benutzer ein Formular zusammen mit einem Captcha sendet, müssen Sie die Captcha-Antwort auf der Serverseite überprüfen. Zur Verifizierung müssen Sie POST-Anfragen an den Endpunkt des hCaptcha senden https://hcaptcha.com/siteverify
. In der POST-Anfrage sind die Parameter der geheime Schlüssel und die h-captcha-Antwort (die aus dem gesendeten Formular stammt).
In PHP können wir sowohl cURL als auch Guzzle verwenden, um mit dem externen Server zu interagieren. Stellen Sie beim Senden von Anfragen über cURL sicher, dass die cURL-Erweiterung auf Ihrem Server aktiviert ist.
Im Fall von cURL sieht Ihr Code wie folgt aus, um die hCaptcha-Antwort zu überprüfen.
<?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.';
}
}
?>
Ersetzen Sie den Platzhalter durch den tatsächlichen Wert. Im obigen Code prüfen wir, ob die success
Variable in der Antwort wahr ist. Wenn es wahr ist, kann das Formular sicher fortgesetzt werden.
Überprüfen Sie die hCaptcha-Antwort mit Guzzle
Guzzle ist eine Alternative zu cURL. Es bietet Ihnen im Vergleich zu cURL viel saubereren Code. Wenn Sie Guzzle verwenden, benötigen Sie keine cURL-Erweiterung auf Ihrem Server.
Um zu beginnen, müssen Sie zuerst die Guzzle-Bibliothek in Ihrem Projekt installieren. Führen Sie den folgenden Befehl aus, um eine Bibliothek zu installieren.
composer require guzzlehttp/guzzle
Schreiben Sie danach den folgenden Code, der die hCAPTCHA-Antwort mit der Guzzle-Bibliothek überprüft.
<?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.';
}
}
?>
Ich hoffe, Sie verstehen die Integration von hCaptcha mit PHP mithilfe von cURL und Guzzle. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.
Zum Thema passende Artikel
- Text-to-Speech mit Amazon Polly in PHP
- So fügen Sie Twitter OAuth-Login in Website mit PHP hinzu
- Bilder für Website mit reSmush.it in PHP komprimieren