Всем привет.
Прошу помощи.
После перехода с версии 7.4 на 8 php на битрикс. Отвалилась на всем сайте капча.
На всех формах ошибка капчи.
Всю голову уже сломал что не так.
Вот одна из форм.Код (Text):
<?require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/header.php»); if (isset($_POST[‘g-recaptcha-response’])) { $url_to_google_api = «https://www.google.com/recaptcha/api/siteverify»; $secret_key = ‘*******’; $query = $url_to_google_api . ‘?secret=» . $secret_key . «&response=» . $_POST[«g-recaptcha-response’] . ‘&remoteip=’ . $_SERVER[‘REMOTE_ADDR’]; $data = json_decode(file_get_contents($query)); if ($data->success) { $el=new CIBlockElement; $PROP[43]=$_POST[‘ID’]; $PROP[42]=$_POST[‘EMAIL’]; $name=$_POST[‘NAME’].’ | ‘.$_POST[‘PHONE’].’ | ‘.$_POST[‘EMAIL’].’ | Запрос на заправку картриджей (слайдер)’; $arLoadProductArray = Array( «MODIFIED_BY» => 1, // элемент изменен текущим пользователем «IBLOCK_SECTION_ID» => false, // элемент лежит в корне раздела «IBLOCK_ID» => 18, «PROPERTY_VALUES»=> $PROP, «NAME» => $name, «DETAIL_TEXT» => $_POST[‘TEXT’], «ACTIVE» => «Y», ); $PRODUCT_ID = $el->Add($arLoadProductArray); } } ?> <div class=»pop-ok-text»> <? if ($PRODUCT_ID>0){ $arEventFields[‘TITLE’]=’Запрос на заправку картриджей (слайдер)’; $arEventFields[‘HTML’]=»Имя: {$_POST[‘NAME’]}<br>Телефон:{$_POST[‘PHONE’]}<br>{$_POST[‘EMAIL’]}<br>{$_POST[‘TEXT’]}»; CEvent::SendImmediate(96, s1, $arEventFields, «N», 49); ?>Заявка принята, спасибо!<?}else{?>Ошибка капчи, повторите еще раз.<?}?> </div> <div class=»pop-ok-btn»> <a href=»javascript:void(0);» onclick=’location.reload();’ class=»btn js-pop-close»>Ок</a> </div>формы везде идентичные, но хоть убей срабатывает только ложное событие else
— Добавлено —
Secret-key установлен. Потер для вопроса сюда
— Добавлено —
Upd в самой форме recaptcha есть, она даже выдает задания и проходит проверку. Но при нажатии кнопки “отправить» ошибка капчи.как мне кажется сама то капча работает, но по какой то причине условие product_id>0 становится ложным
— Добавлено —
Upd
Пробовал show ($product_id);
Переменная пустая
Дело возможно не связано с капчей, а с другим подключенным функционалом.
Может $PRODUCT_ID не был добавлен, а может ещё что. Гадать можно вечноPHP:
<?php 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:
if ($data->success) { //- INSERT } //- И else { //- captcha error }А потом разбираться с капчей …
Попробуй курлом обратиться
PHP:
‘secret’ => ‘secret key’, ‘response’ => $recaptcha, ); CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => ‘https://www.google.com/recaptcha/api/siteverify’, CURLOPT_POST => 1, CURLOPT_SSL_VERIFYPEER => 0 );И проверка ниже
PHP:
{ $error = ‘Пожалуйста, подтвердите, что вы не робот!’; } elseif ( !$response[«success»] ) { $error = ‘Проверка капчи не пройдена’; }