Настройка ReCAPTCHA

  • 8 Ответов
  • 197 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Region93

  • ***
  • 50
  • [+]0 / [-]0
  • Вперед и только вперед !!!
    • Просмотр профиля
Настройка ReCAPTCHA
« : 23.04.2017, 11:19:02 »
Добрый день нужна помощь с настройкой reCaptcha v2:

У меня есть форма но в моем коде когда человек не ставит галочку на иконке "I'm not a robot" recaptha code отправляет человека на пустую страницу с словами "Капча введена неверно" и сразу отправляет на пустую форму.
Мне же нужно чтоб человек оставался на этой же странице с предупреждением о не заполнении CAPTCHA и набранным сообщением в форме.
Вот пример с самого сайта Google
https://www.google.com/recaptcha/api2/demo

Вот мой php обработчик:

Спойлер
[свернуть]
      

*

Оффлайн robert

Re: Настройка ReCAPTCHA
« Ответ #1 : 23.04.2017, 11:41:11 »
1. Возьмите за правило использовать фигурные скобки для if, for, foreach, while... Без них страдает читабельность и исполняется по условиям только одна следующая строка кода.
2. У Joomla есть встроенная reCaptcha, зачем снова изобретать велосипед, тем более опыта нет?
3. Привести надо свою ссылку, а не демо от Google.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн Region93

  • ***
  • 50
  • [+]0 / [-]0
  • Вперед и только вперед !!!
    • Просмотр профиля
Re: Настройка ReCAPTCHA
« Ответ #2 : 23.04.2017, 11:50:58 »
Потому, что форма в которую я пытаюсь внедрить капчу = самописный компонент. И что плохого когда человек учиться)

*

Оффлайн robert

Re: Настройка ReCAPTCHA
« Ответ #3 : 23.04.2017, 11:57:41 »
Кто сказал, что учиться плохо? Но учиться тоже надо уметь.
Возьмите код плагина reCaptcha и изучите, это не должно составить для вас труда, если вы уже написали свой компонент.
Еще раз обратите внимание на то, что эти строки
Код: (php-brief) [Выделить]
   $key = 'СЕКРЕТНЫЙ КЛЮЧ';
   $query = $url.'?secret='.$key.'&response='.$_POST['g-recaptcha-response'].'&remoteip='.$_SERVER['REMOTE_ADDR'];
   $data = json_decode(file_get_contents($query));


echo "
<html>
  <head>
   <meta http-equiv='Refresh' content='0; URL=".$_SERVER['HTTP_REFERER']."'>
  </head>
</html>";
         exit('Капча введена неверно');
у вас исполняются всегда.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

Re: Настройка ReCAPTCHA
« Ответ #4 : 23.04.2017, 12:05:35 »
1) Для того, чтобы страница не обновлялась, а выдавала ошибку, необходимо использовать AJAX. Если Joomla, то можно использовать com_ajax для модулей или писать свой скрипт для компонентов
2) Можно посмотреть обязаловку Invisible Recaptcha - там необходимо использовать callback, можете поизучать API и внедрить проверку на стороне клиента еще до проверки на backend

*

Оффлайн Region93

  • ***
  • 50
  • [+]0 / [-]0
  • Вперед и только вперед !!!
    • Просмотр профиля
Re: Настройка ReCAPTCHA
« Ответ #5 : 23.04.2017, 12:35:45 »
Сам не писал, по этому и тяжело.

Цитировать
у вас исполняются всегда.

В чем ошибка?

*

Оффлайн robert

Re: Настройка ReCAPTCHA
« Ответ #6 : 24.04.2017, 18:49:35 »
В чем ошибка?
Это зависит от вашей задумки. Например, при любой раскладке
отправляет человека на пустую страницу с словами "Капча введена неверно" и сразу отправляет на пустую форму. 
- это можно считать ошибкой?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн b2z

  • *****
  • 7449
  • [+]739 / [-]0
  • Разраблю понемногу
    • Просмотр профиля
    • NorrNext - расширения для Joomla! и Pagekit
Re: Настройка ReCAPTCHA
« Ответ #7 : 24.04.2017, 19:24:04 »
Вывод встроенной CAPTCHA Joomla довольно прост:

Код: (php) [Выделить]
JPluginHelper::importPlugin('captcha', 'recaptcha');

$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onInit', 'dynamic_recaptcha_1');
?>
<div>
<?php $output $dispatcher->trigger('onDisplay', array('recaptcha''dynamic_recaptcha_1''class="my-recaptcha"'));
echo $output[0]; ?>

</div>

Далее проверяем качу (например, в контроллере):

Код: (php) [Выделить]
JPluginHelper::importPlugin('captcha', 'recaptcha');

$dispatcher = JEventDispatcher::getInstance();
$result = $dispatcher->trigger('onCheckAnswer');

if (!$result[0])
{
$this->setRedirect(
JRoute::_($someUrl, false)
);
$this->setMessage(
JText::_($this->text_prefix . '_ERROR_CAPTCHA_NOT_VALID'), 'error'
);

return false;
}

*

Оффлайн Aleks.Denezh

Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016