WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Руководство по интеграции hCaptcha с PHP

575

Недавно один из наших читателей спросил об интеграции hCapctha на веб-сайт. HCaptcha хорошая альтернатива службе Google ReCaptcha. В этой статье мы изучаем, как можно добавить hCapctha с PHP на свой веб-сайт.

Всегда рекомендуется использовать капчу в формах сайта. Спам действительно плохой, и он просто расстраивает вас. Вы никогда не захотите тратить свое драгоценное время на удаление поддельных / ненужных комментариев.

Используя hCaptcha, пользователь должен решить проблемы перед отправкой формы. И ваша форма должна продолжаться только в том случае, если капча проходит проверку. Благодаря интеграции капчи он избавляет от попадания тонны спама в базу данных и ваш почтовый ящик. Потому что только настоящий человек может разгадывать загадки капчи.

Сказав это, давайте посмотрим на интеграцию hCaptcha с PHP. Требуется проверить ответ hCaptcha на стороне сервера. Мы напишем код на стороне сервера, используя как cURL, так и библиотеку Guzzle. Пользователь может использовать любой из них.

Начиная

Вам необходимо сначала создать учетную запись в сервисе hCaptcha. В отличие от Google reCAPTCHA, вы можете использовать ключи hCaptcha прямо на своем веб-сайте. Вам не нужно регистрировать у них свой домен.

Но при желании вы можете добавить свой домен, нажав кнопку Новый сайт. Откроется форма, в которой вы должны передать свой домен в поле Hostnames.

Затем щелкните значок настроек в таблице и возьмите ключ вашего сайта.

Руководство по интеграции hCaptcha с PHP

Чтобы получить секретный ключ, перейдите на вкладку «Настройки».

Руководство по интеграции hCaptcha с PHP

Когда вы будете готовы с ключами, необходимо выполнить 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. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее