Juhend hCaptcha integreerimiseks PHP-ga
Hiljuti küsis üks meie lugejatest hCapctha veebisaidil integreerimise kohta. HCaptcha on kena alternatiiv Google reCAPTCHA teenust. Selles artiklis uurime, kuidas saab hCapctha koos PHP-ga oma veebisaidile lisada.
Veebisaidi vormidel on alati soovitatav kasutada captcha. Rämpspostid on tõesti halvad ja see lihtsalt teid pettub. Te ei soovi kunagi raisata oma väärtuslikku aega võltsitud / tarbetute kommentaaride kustutamisele.
HCaptcha abil peab kasutaja enne vormi esitamist probleemid lahendama. Teie vorm peaks jätkuma ainult siis, kui captcha läbib selle kinnituse. Captcha integreerimisega säästab see tonni rämpsposti andmebaasi ja teie postkasti sisenemise eest. Sest captcha mõistatusi saab lahendada ainult tõeline inimene.
Olles seda öelnud, vaatame pilgu hCaptcha integreerimisele PHP-ga. See nõuab serveripoolse hCaptcha vastuse kinnitamist. Kirjutame serveripoolse koodi nii cURLi kui ka Guzzle’i teeki kasutades. Kasutaja saab neist ükskõik millist kasutada.
Alustamine
Kõigepealt peate looma konto hCaptcha teenusega. Erinevalt Google reCAPTCHA-st saate hCaptcha-võtmeid kasutada otse oma veebisaidil. Teil pole vaja oma domeeni nende juures registreerida.
Kuid soovi korral saate oma domeeni lisada, klõpsates nuppu Uus sait. See avab vormi, kus peate oma domeeni edastama väljale Hostnames.
Järgmisena klõpsake tabelis seadete ikooni ja haarake saidi võti.
Salajase võtme haaramiseks klõpsake vahekaarti ‘Seaded’.
Kui olete klahvidega valmis, on vaja järgida kahte sammu. Esmalt lisage oma vormile hCaptcha. Seejärel kontrollige captcha vastust serveripoolsel küljel.
Loome lihtsa vormi ja lisame sellele hCaptcha järgmiselt.
<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>
Siin oleme lisanud hCaptcha JavaScripti teegi ja lisanud klassi h-captcha
div konteinerisse. Samuti peate edastama saidi võtme andmeatribuudile data-sitekey.
Laadige leht uuesti ja nüüd peaksite vormile nägema märkeruudu hCaptcha. Vaatame nüüd, kuidas captcha vastust kinnitada.
Kinnitage hCaptcha Response kasutades cURL
Kui kasutaja esitab vormi koos captchaga, peate kontrollima captcha vastuse serveri poolel. Kontrollimiseks peate saatma POST-taotlused hCaptcha lõpp-punkti https://hcaptcha.com/siteverify
. POST-päringus on parameetriteks salajane võti ja h-captcha-response (mis pärineb esitatud vormist).
PHP-s saame välise serveriga suhtlemiseks kasutada nii cURL-i kui ka Guzzle-i. CURL-i kaudu päringute saatmisel veenduge, et teie serveris oleks laiendus cURL lubatud.
CURL-i korral on teie kood hCaptcha vastuse kinnitamiseks järgmine.
<?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.';
}
}
?>
Asendage kohatäide tegeliku väärtusega. Ülaltoodud koodis kontrollime, kas success
muutuja on vastuses tõene. Kui see on tõsi, on vormi jätkamine ohutu.
Kinnitage hCaptcha Response Guzzle’i abil
Guzzle on alternatiiv CURL- ile. See pakub teile palju puhtamat koodi kui cURL. Kui kasutate Guzzle’i, ei pea te oma serveris olema CURL-laiendit.
Alustamiseks peate kõigepealt oma projekti installima Guzzle’i teegi. Teegi installimiseks käivitage järgmine käsk.
composer require guzzlehttp/guzzle
Pärast seda kirjutage kood allpool, mis kontrollib hCAPTCHA vastust Guzzle’i teegi abil.
<?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.';
}
}
?>
Loodan, et saate aru hCaptcha integreerimisest PHP-ga, kasutades cURL ja Guzzle. Palun jagage oma mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.