Как включить Google RECAPTCHA 2 в белый список php для ввода формы

У меня есть форма, в которой я решил включить Google recaptcha в качестве дополнительной меры безопасности. Когда я добавил рекапчу, возникает ошибка, потому что рекапча не внесена в белый список. Я читал, что HTML5 не позволяет присвоить атрибут имени div. то есть <div name = "myName"></div>. Вопреки соглашению, я попытался добавить атрибут name в div recaptcha и добавить это имя в белый список. Такой подход не удался. В div recaptcha есть iframe с атрибутом name. Я пробовал использовать имя iframe в белом списке. Этот подход также потерпел неудачу. Есть скрытый ввод с id = "recaptcha-token". Я добавил "recaptcha-token" в белый список. Этот подход тоже не удался. Скрытый ввод создается с помощью recaptcha api, поэтому я не думаю, что у меня есть способ присвоить этому вводу атрибут name. Есть ли у кого-нибудь обходной путь или предложение?

Примечание: проверка формы и белый список работали должным образом до добавления рекапчи.

Рекапча будет работать должным образом, если я уберу белый список входных данных формы.

Это div внутри формы.

<div class = "row">
  <div class = "col-md-12">
    <div class = "g-recaptcha" data-sitekey = "<?php print $public_key;?>"></div>
  </div>
</div>

В форме есть скрытый ввод, содержащий токен. Этот ввод и токен полностью отделены от Google Recaptcha. Однако этот токен должен быть проверен перед сравнением входных данных формы с белым списком $.

Вот блоки кода:

function verifyFormToken($form) {
    if (!isset($_SESSION[$form.'_token'])) { 
        $errors[]= "Session not set and no token";
        return false;
    }else{
        //echo 'Session token is set.'.'</br>';
    }   

    if (!isset($_POST['token'])) {
        $errors[]= 'No form token was sent!'.'</br>';
        return false;
    }

    if ($_SESSION[$form.'_token'] !== $_POST['token']) {
        $errors[]= 'tokens don\'t match!'.'</br>';
        return false;
        die();
    }else{
        //echo 'Tokens match. Good to go.'.'</br>';
        return true;
    }   
}

    // VERIFY LEGITIMACY OF TOKEN
if (verifyFormToken('form1')) {
    // Build a whitelist of form inputs
    $whitelist = array('token','req-fName','req-lName','req-email','req-phone','req-address','req-city','req-   state','req-zip','req-message','req_method','req-dateDepart','req-dateReturn','recaptcha-token','submit');

    foreach ($_POST as $key=>$item) {
        if (!in_array($key, $whitelist)) {
            writeLog('Unknown form fields');
            die('Hack-Attempt detected. Only the fields originally included in the form are allowed!');
        }
    } 
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
85
1

Ответы 1

Этот ответ пришел с phpbuilder.com Оказывается, мне нужно было включить "g-recaptcha-response" в белый список. Надеюсь, это поможет кому-нибудь еще, столкнувшемуся с этой проблемой.

Другие вопросы по теме