Jump to content

[2.*] reCAPTCHA API 2.0 (капча от гугл)


Recommended Posts

recaptcha работает на всех страницах, кроме Корзины!

 

получаю ошибку

"missing-input-response"

 

100 раз все перепроверил - ни в какую не хочет работать

 

Поможете!?

Link to post
Share on other sites
  • 4 months later...
  • Replies 93
  • Created
  • Last Reply

Top Posters In This Topic

$response = null;

$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

Вот это надо вставлять не после class а в ФУНКЦИЮ

Подключал капчу для блога и косякнул как все :D

 

Сначала вставил сюда:

class BlogView extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code); 

Получил ошибку syntax error, unexpected '$response' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST), прочитал комент Kosjak76

и исправил, нужно вставлять сюда:

 

// Принимаем комментарий
        if ($this->request->method('post') && $this->request->post('comment'))
        {
            $response = null;
            $reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);

Спасибо за подсказку

Edited by FIMA
Link to post
Share on other sites
  • 3 months later...

Ребята. Сделал всё по инструкции. Единственное что, взял файлы уже готовые. Которые предоставил  Ardion.
Всё подобавлял, ввёл ключи от капчи Гугл. При регистрации (проверяю) - очень долгий таймаут и сообщение - неверно введена капча!


в логах:

[Mon Feb 17 15:55:36.286289 2020] [:error] [pid 16263] [client 123.34.112.130:59995] PHP Warning:  Query was empty [] in /site/api/Database.php on line 105, referer: https://site/simpla/index.php?module=SettingsAdmin


Я так понял, нужно либо заново ключи перегенерировать, либо что-то где-то добавить, по причине того, что api-ключи не подхватываются сайтом (вроде бы.) но я не уверен. подскажите, кто будет добр )

Link to post
Share on other sites

Ребята. Сделал всё по инструкции. Единственное что, взял файлы уже готовые. Которые предоставил Ardion.

Всё подобавлял, ввёл ключи от капчи Гугл. При регистрации (проверяю) - очень долгий таймаут и сообщение - неверно введена капча!

 

 

в логах:

[Mon Feb 17 15:55:36.286289 2020] [:error] [pid 16263] [client 123.34.112.130:59995] PHP Warning:  Query was empty [] in /site/api/Database.php on line 105, referer: https://site/simpla/index.php?module=SettingsAdmin

Я так понял, нужно либо заново ключи перегенерировать, либо что-то где-то добавить, по причине того, что api-ключи не подхватываются сайтом (вроде бы.) но я не уверен. подскажите, кто будет добр )

На странице «Настройка сайта» ключи прописали и сохранили?

Link to post
Share on other sites

На странице «Настройка сайта» ключи прописали и сохранили?

 

да!

 

pic12.jpg

 

в логах: 

 

[Mon Feb 17 16:18:03.159921 2020] [:error] [pid 8119] [client 127.0.0.1:1132] PHP Warning:  Placeholder substitution error. Diagnostics: "UPDATE s_settings SET value=UNKNOWN_PLACEHOLDER_0 WHERE name=?" in /site/api/Database.php on line 132, referer: htps://site/simpla/index.php?module=SettingsAdmin
[Mon Feb 17 16:18:03.159978 2020] [:error] [pid 8119] [client 127.0.0.1:1132] PHP Warning:  Query was empty [] in /site/api/Database.php on line 105, referer: htps://site/simpla/index.php?module=SettingsAdmin

Edited by mdmatic
Link to post
Share on other sites


в общем. поправил там переменную одну. по-прежнему валится мускуль.


[Mon Feb 17 16:51:04.803817 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/admin/web/veles.shop/public_html/captcha/ReCaptcha/RequestMethod/Post.php on line 68, referer: https://veles.shop/user/register
[Mon Feb 17 16:51:04.803877 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: file_get_contents(https://www.google.com/recaptcha/api/siteverify): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/admin/web/veles.shop/public_html/captcha/ReCaptcha/RequestMethod/Post.php on line 68, referer: https://veles.shop/user/register
[Mon Feb 17 16:51:04.804164 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: MySQL server has gone away [SELECT count(*) as count FROM s_users WHERE email='ewrwef@ukr.net'] in /home/admin/web/veles.shop/public_html/api/Database.php on line 105, referer: https://veles.shop/user/register
[Mon Feb 17 16:51:04.806723 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: MySQL server has gone away [SELECT b.id, b.url, b.name, b.annotation, b.text,\r\n\t\t b.meta_title, b.meta_keywords, b.meta_description, b.visible,\r\n\t\t b.date\r\n\t\t FROM s_blog b WHERE 1 AND b.visible = 1 \r\n\t\t ORDER BY date DESC, id DESC LIMIT 0, 9 ] in /home/admin/web/veles.shop/public_html/api/Database.php on line 105, referer: https://veles.shop/user/register
[Mon Feb 17 16:51:04.806756 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: MySQL server has gone away in /home/admin/web/veles.shop/public_html/api/Database.php on line 150, referer: https://veles.shop/user/register
[Mon Feb 17 16:51:04.806827 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: MySQL server has gone away [SELECT DISTINCT b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image\r\n\t\t\t\t\t\t\t\t \t\tFROM s_brands b ORDER BY b.name] in /home/admin/web/veles.shop/public_html/api/Database.php on line 105, referer: https://veles.shop/user/register
[Mon Feb 17 16:51:04.806835 2020] [:error] [pid 16264] [client 159.65.80.170:60679] PHP Warning: MySQL server has gone away in /home/admin/web/veles.shop/public_html/api/Database.php on line 150, referer: https://veles.shop/user/register
Edited by mdmatic
Link to post
Share on other sites
  • 9 months later...

Народ, прошу помочь с реКаптчей. Перепробовал все, что предлагается в этой теме (кроме прикрепленных файлов, которые скачиваются пустыми, почему-то). На страницах товаров в отзывах реКаптча не работает. У меня добавлен модуль быстрого заказа и я не пойму, где я что не так делаю... Короче прикладываю файл, буду благодарен, если кто посмотрит.https://yadi.sk/d/YuPUmv08OrQiPg

чет файл подгружаться не хочет, выложил на ЯДиск.

Link to post
Share on other sites
  • 1 month later...

Ребят, всё по инструкции делал.
Вроде несложно, да и внимательно..

Но ошибку выбрасывает при переходе в корзину
 

Parse error: syntax error, unexpected '$response' (T_VARIABLE), expecting function (T_FUNCTION) in /home/am5999/xn----8sbagbcpvbrptv3l.xn--j1amh/www/view/CartView.php on line 19

Что может быть?

Link to post
Share on other sites
58 минут назад, madison21 сказал:

 



Parse error: syntax error, unexpected '$response' (T_VARIABLE), expecting function (T_FUNCTION) in /home/am5999/xn----8sbagbcpvbrptv3l.xn--j1amh/www/view/CartView.php on line 19

 

Так Вам же внимательно расписали ошибку, даже указали строчку. Посмотрите правильностью еще раз построчно.

Edited by simpla24
Link to post
Share on other sites

Специально заново переделал, по несколько раз перепроверял.
На страницах Корзина, Товар, Контакты (всего 5)... выдаёт эту ошибку в файлах CartView.php, ProductView.php, FeedbackView.php (всего 5)... именно на строке 19.

А там везде в 5 файлах я произвёл замену с

class FeedbackView extends View
{

на

class FeedbackView extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);

Разве не так?
Подскажите пожалуйста, кто разобрался..

Link to post
Share on other sites
В 25.06.2016 в 01:51, Netrea сказал:

class ProductView extends View
{
    function fetch()
    {   
        $response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);

Внимательно перечитайте первую страницу темы

Link to post
Share on other sites
8 часов назад, madison21 сказал:

Специально заново переделал, по несколько раз перепроверял.
На страницах Корзина, Товар, Контакты (всего 5)... выдаёт эту ошибку в файлах CartView.php, ProductView.php, FeedbackView.php (всего 5)... именно на строке 19.

А там везде в 5 файлах я произвёл замену с


class FeedbackView extends View
{

на


class FeedbackView extends View
{
$response = null;
$reCaptcha = new \ReCaptcha\ReCaptcha($this->settings->secret_code);

Разве не так?
Подскажите пожалуйста, кто разобрался..

У все решение давно прекрасно работает. Попробуйте эту инструкцию, она более подходит для новичков.

Также советую все таки ставить 3 версию, у меня на проектах 2 уже пропускает некоторый спам.

Link to post
Share on other sites

Кому интересно то вот решение по интеграции reCaptcha v3.
В любую форму добавляем

<input type="hidden" name="recaptcha_response">


Добавляем в .tpl

{literal}
<style>.grecaptcha-badge {visibility: hidden;}</style>
<script src="https://www.google.com/recaptcha/api.js?render=__PUBLIC_KEY__"></script>
<script>
    grecaptcha.ready(function() {
        grecaptcha.execute('__PUBLIC_KEY__', {action: 'submit'}).then(function(token) {
            grecaptcha.value = token;
            //объект формы
            $("form.ajax_form").find("input[name='recaptcha_response']").val(token);
        });
    });
</script>
{/literal}

А это в любом View где надо проверять:

function google_captcha()
{
    if(isset($_POST['recaptcha_response']))
    {
        $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
        $recaptcha_secret = "__SECRET_KEY__";
        $recaptcha_response = $_POST['recaptcha_response'];
        $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
        $recaptcha = json_decode($recaptcha);
        //проверка на очки
        if(isset($recaptcha->score) && $recaptcha->score >= 0.5)
            return true;
    }
    return false;
}

Ну и вызов google_captcha() для проверки.

__PUBLIC_KEY__ и __SECRET_KEY__ вводите тот что вам гугл выдал.

Edited by a13x
Link to post
Share on other sites
  • 5 months later...
1 час назад, Axotn1k сказал:

Кто может написать подбробно как настроить reCaptcha v3 на сайте ?

Тут где то решение было, вы про инвизибл капчу?

Link to post
Share on other sites
В 04.07.2021 в 18:15, Kami сказал:

Тут где то решение было, вы про инвизибл капчу?

Я о том как reCaptcha v3 настроить. 2я версия не справляеться, спам так и прет

Link to post
Share on other sites
  • 3 months later...
В 12.01.2021 в 21:53, a13x сказал:

Кому интересно то вот решение по интеграции reCaptcha v3.
В любую форму добавляем


<input type="hidden" name="recaptcha_response">


Добавляем в .tpl


{literal}
<style>.grecaptcha-badge {visibility: hidden;}</style>
<script src="https://www.google.com/recaptcha/api.js?render=__PUBLIC_KEY__"></script>
<script>
    grecaptcha.ready(function() {
        grecaptcha.execute('__PUBLIC_KEY__', {action: 'submit'}).then(function(token) {
            grecaptcha.value = token;
            //объект формы
            $("form.ajax_form").find("input[name='recaptcha_response']").val(token);
        });
    });
</script>
{/literal}

А это в любом View где надо проверять:


function google_captcha()
{
    if(isset($_POST['recaptcha_response']))
    {
        $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
        $recaptcha_secret = "__SECRET_KEY__";
        $recaptcha_response = $_POST['recaptcha_response'];
        $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
        $recaptcha = json_decode($recaptcha);
        //проверка на очки
        if(isset($recaptcha->score) && $recaptcha->score >= 0.5)
            return true;
    }
    return false;
}

Ну и вызов google_captcha() для проверки.

__PUBLIC_KEY__ и __SECRET_KEY__ вводите тот что вам гугл выдал.

Привет! Расскажи подробнее пожалуйста...

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...