Не работает recaptcha

Всем привет.
Прошу помощи.
После перехода с версии 7.4 на 8 php на битрикс. Отвалилась на всем сайте капча.
На всех формах ошибка капчи.
Всю голову уже сломал что не так.
Вот одна из форм.

Код (Text):
  1. <?require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/header.php»);
  2. if (isset($_POST[‘g-recaptcha-response’]))
  3. {
  4.     $url_to_google_api = «https://www.google.com/recaptcha/api/siteverify»;
  5.     $secret_key = ‘*******’;
  6.     $query = $url_to_google_api . ‘?secret=» . $secret_key . «&response=» . $_POST[«g-recaptcha-response’] . ‘&remoteip=’ . $_SERVER[‘REMOTE_ADDR’];
  7.     $data = json_decode(file_get_contents($query));
  8.     if ($data->success)
  9.     {
  10. $el=new CIBlockElement;
  11.  
  12. $PROP[43]=$_POST[‘ID’];
  13. $PROP[42]=$_POST[‘EMAIL’];
  14. $name=$_POST[‘NAME’].’ | ‘.$_POST[‘PHONE’].’ | ‘.$_POST[‘EMAIL’].’ | Запрос на заправку картриджей (слайдер)’;
  15. $arLoadProductArray = Array(
  16.   «MODIFIED_BY»    => 1, // элемент изменен текущим пользователем
  17.   «IBLOCK_SECTION_ID» => false,          // элемент лежит в корне раздела
  18.   «IBLOCK_ID»      => 18,
  19.   «PROPERTY_VALUES»=> $PROP,
  20.   «NAME»           => $name,
  21.   «DETAIL_TEXT»    => $_POST[‘TEXT’],
  22.   «ACTIVE»         => «Y»,
  23.   );
  24.  
  25. $PRODUCT_ID = $el->Add($arLoadProductArray);
  26.     }
  27. }
  28. ?>
  29.  
  30. <div class=»pop-ok-text»>
  31.     <? if ($PRODUCT_ID>0){
  32. $arEventFields[‘TITLE’]=’Запрос на заправку картриджей (слайдер)’;
  33. $arEventFields[‘HTML’]=»Имя: {$_POST[‘NAME’]}<br>Телефон:{$_POST[‘PHONE’]}<br>{$_POST[‘EMAIL’]}<br>{$_POST[‘TEXT’]}»;
  34. CEvent::SendImmediate(96, s1, $arEventFields, «N», 49);
  35. ?>Заявка принята, спасибо!<?}else{?>Ошибка капчи, повторите еще раз.<?}?>
  36. </div>
  37. <div class=»pop-ok-btn»>
  38.     <a href=»javascript:void(0);» onclick=’location.reload();’ class=»btn js-pop-close»>Ок</a>
  39. </div>

формы везде идентичные, но хоть убей срабатывает только ложное событие else
— Добавлено —
Secret-key установлен. Потер для вопроса сюда :)
— Добавлено —
Upd в самой форме recaptcha есть, она даже выдает задания и проходит проверку. Но при нажатии кнопки “отправить» ошибка капчи.

как мне кажется сама то капча работает, но по какой то причине условие product_id>0 становится ложным
— Добавлено —
Upd
Пробовал show ($product_id);
Переменная пустая

 

Дело возможно не связано с капчей, а с другим подключенным функционалом.
Может $PRODUCT_ID не был добавлен, а может ещё что. Гадать можно вечно :)

PHP:
  1. <?php
  2. declare(strict_types = 1);

Очисти журнал ошибок, перезагрузи сервер, вставь код в скрипт и потом почитай журнал ошибок php

 

Upd
Пробовал show ($

Из ошибки понятно, что не задана переменная, но не знаю как ее задать?(((
По разному уже перепробовал.
Warning: Undefined variable $PRODUCT_ID in /sites/mega-zapravka.ru/ajax/zapravka.php on line 31

 

буду кэпом, значит $data->success отдает false

Запускаешь сайт на том же домене, что и в настройках google recaptcha ?

 

Да конечно, домен тот же)

 

Ну тебе как минимум INSERT нужно «запихнуть» в блок

PHP:
  1.     if ($data->success)
  2.     {
  3.          //- INSERT
  4.     }
  5.     //- И
  6.     else
  7.     {
  8.          //- captcha error
  9.     }

А потом разбираться с капчей …

Попробуй курлом обратиться

PHP:
  1.          
  2.  
  3.          $recaptcha           = trim($_POST[‘g-recaptcha-response’]);  
  4.          $curl = curl_init();
  5.  
  6.          $postfields = array(
  7.           ‘secret’   => ‘secret key’,
  8.           ‘response’ => $recaptcha,
  9.          );
  10.  
  11.          $options = array(
  12.            CURLOPT_RETURNTRANSFER => 1,
  13.            CURLOPT_URL => ‘https://www.google.com/recaptcha/api/siteverify’,
  14.            CURLOPT_POST => 1,
  15.            CURLOPT_POSTFIELDS => http_build_query($postfields),
  16.            CURLOPT_SSL_VERIFYPEER => 0
  17.          );
  18.  
  19.         curl_setopt_array($curl, $options);
  20.         $response = json_decode(curl_exec($curl), true);

И проверка ниже

PHP:
  1.         if ( empty( $recaptcha ) )
  2.         {
  3.           $error = ‘Пожалуйста, подтвердите, что вы не робот!’;
  4.         }
  5.         elseif ( !$response[«success»]  )
  6.         {
  7.            $error = ‘Проверка капчи не пройдена’;
  8.         }
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *