Посібник з інтеграції hCaptcha з PHP
Нещодавно один із наших читачів запитав про інтеграцію hCapctha на веб-сайті. HCaptcha хороша альтернатива службі Google ReCaptcha. У цій статті ми вивчаємо, як можна додати hCapctha за допомогою PHP на своєму веб-сайті.
Завжди рекомендується мати капчу у формах веб-сайту. Спам справді поганий, і це вас просто засмучує. Ви ніколи не хочете витрачати свій цінний час на очищення фальшивих / непотрібних коментарів.
Використовуючи hCaptcha, користувач повинен вирішити проблеми перед подачею форми. І ваша форма повинна продовжуватися, лише якщо капча проходить перевірку. Інтегруючи captcha, ви економите купу тонн спаму від входу в базу даних та вашу поштову скриньку. Тому що лише справжня людина може розгадати загадки капчі.
Сказавши це, давайте поглянемо на інтеграцію hCaptcha з PHP. Це вимагає перевірки відповіді hCaptcha на стороні сервера. Ми напишемо серверний код, використовуючи як cURL, так і бібліотеку Guzzle. Користувач може використовувати будь-який з них.
Починаємо
Спочатку потрібно створити обліковий запис за допомогою служби hCaptcha. На відміну від Google reCAPTCHA, ви можете використовувати ключі hCaptcha безпосередньо на своєму веб-сайті. Вам не потрібно реєструвати свій домен у них.
Але за бажанням ви можете додати свій домен, натиснувши кнопку Новий сайт. Відкриється форма, де вам потрібно передати свій домен у поле Імена хостів.
Далі клацніть на піктограму налаштувань у таблиці та візьміть ключ веб-сайту.
Щоб захопити секретний ключ, натисніть на вкладку "Налаштування".
Після того, як ви готові до роботи з ключами, потрібно виконати 2 кроки. Спочатку додайте hCaptcha у форму. А потім перевірити відповідь капчі на стороні сервера.
Давайте створимо просту форму і додамо до неї hCaptcha наступним чином.
<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>
Тут ми включили бібліотеку JavaScript hCaptcha та додали клас h-captcha
до контейнера div. Вам також потрібно передати ключ вашого сайту в атрибут data data-sitekey.
Перезавантажте сторінку, і тепер ви побачите прапорець hCaptcha, доданий до форми. Подивимось зараз, як перевірити відповідь капчі.
Перевірте відповідь hCaptcha за допомогою cURL
Коли користувач надсилає форму разом із капчу, вам потрібно перевірити відповідь капчі на стороні сервера. Для перевірки потрібно надіслати запити POST до кінцевої точки hCaptcha https://hcaptcha.com/siteverify
. У запиті POST параметрами є секретний ключ та h-captcha-response (що надходить із поданої форми).
У PHP ми можемо використовувати cURL та Guzzle для взаємодії із зовнішнім сервером. Надсилаючи запити через cURL, переконайтеся, що розширення cURL увімкнено на вашому сервері.
У випадку cURL, ваш код буде таким, щоб перевірити відповідь 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.';
}
}
?>
Замініть заповнювач фактичним значенням. У наведеному вище коді ми перевіряємо, чи є success
змінна істинною у відповіді. Якщо це правда, тоді форму можна безпечно продовжувати.
Перевірте відповідь hCaptcha за допомогою Guzzle
Guzzle – це альтернатива cURL. Він надає вам набагато чистіший код порівняно з cURL. Якщо ви використовуєте Guzzle, вам не потрібно мати розширення cURL на вашому сервері.
Для початку потрібно спочатку встановити бібліотеку Guzzle у свій проект. Виконайте наведену нижче команду для встановлення бібліотеки.
composer require guzzlehttp/guzzle
Після цього напишіть код нижче, який буде перевіряти відповідь hCAPTCHA за допомогою бібліотеки 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.';
}
}
?>
Сподіваюся, ви розумієте інтеграцію hCaptcha з PHP за допомогою cURL та Guzzle. Будь ласка, поділіться своїми думками та пропозиціями в розділі коментарів нижче.
Пов’язані статті
- Перетворення тексту в мову за допомогою Amazon Polly у PHP
- Як додати Twitter OAuth до веб-сайту за допомогою PHP
- Стискайте зображення для веб-сайту за допомогою reSmush.it у PHP