Руководство по интеграции hCaptcha с PHP
Недавно один из наших читателей спросил об интеграции hCapctha на веб-сайт. HCaptcha хорошая альтернатива службе Google ReCaptcha. В этой статье мы изучаем, как можно добавить hCapctha с PHP на свой веб-сайт.
Всегда рекомендуется использовать капчу в формах сайта. Спам действительно плохой, и он просто расстраивает вас. Вы никогда не захотите тратить свое драгоценное время на удаление поддельных / ненужных комментариев.
Используя hCaptcha, пользователь должен решить проблемы перед отправкой формы. И ваша форма должна продолжаться только в том случае, если капча проходит проверку. Благодаря интеграции капчи он избавляет от попадания тонны спама в базу данных и ваш почтовый ящик. Потому что только настоящий человек может разгадывать загадки капчи.
Сказав это, давайте посмотрим на интеграцию hCaptcha с PHP. Требуется проверить ответ hCaptcha на стороне сервера. Мы напишем код на стороне сервера, используя как cURL, так и библиотеку Guzzle. Пользователь может использовать любой из них.
Начиная
Вам необходимо сначала создать учетную запись в сервисе hCaptcha. В отличие от Google reCAPTCHA, вы можете использовать ключи hCaptcha прямо на своем веб-сайте. Вам не нужно регистрировать у них свой домен.
Но при желании вы можете добавить свой домен, нажав кнопку Новый сайт. Откроется форма, в которой вы должны передать свой домен в поле Hostnames.
Затем щелкните значок настроек в таблице и возьмите ключ вашего сайта.
Чтобы получить секретный ключ, перейдите на вкладку «Настройки».
Когда вы будете готовы с ключами, необходимо выполнить 2 шага. Сначала добавьте hCaptcha в свою форму. А затем проверьте ответ captcha на стороне сервера.
Создадим простую форму и добавим в нее 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. Давайте теперь посмотрим, как проверить ответ captcha.
Проверить ответ hCaptcha с помощью cURL
Когда пользователь отправляет форму вместе с captcha, вам необходимо проверить ответ captcha на стороне сервера. Для проверки вы должны отправить 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