Новости Joomla

Joomla официально признана цифровым общественным благом Joomla с гордостью сообщает, что была...

Joomla официально признана цифровым общественным благом 🙏🎉Joomla с гордостью сообщает, что была официально признана цифровым общественным благом (Digital Public Good, DPG) Альянсом цифровых общественных благ (Digital Public Goods Alliance, DPGA) — инициативой, поддерживаемой Организацией Объединённых Наций.Это признание ставит Joomla! в ряд международных open-source проектов, которые разделяют ценности открытости, прозрачности, защиты данных и социального воздействия. Важно отметить, что статус цифрового общественного блага присвоен самому программному решению Joomla!, а не организации Joomla как юридическому лицу.Альянс цифровых общественных благ (DPGA) ведёт международный реестр цифровых общественных благ и оценивает проекты на основе чётко определённых стандартов. Его миссия — поддержка открытых технологий, способствующих достижению Целей устойчивого развития ООН (UN SDGs) и решению глобальных задач развития. 🌐Чтобы получить статус цифрового общественного блага, проект должен соответствовать Стандарту цифровых общественных благ (Digital Public Goods Standard), который включает следующие критерии:✔️ Открытое лицензирование (например, использование признанных open-source лицензий)✔️ Защита данных и безопасность✔️ Соответствие правовым и этическим нормам✔️ Вклад в достижение Целей устойчивого развития ООН✔️ Прозрачное управление и долгосрочная устойчивость✔️ Активное вовлечение сообществаПолучение статуса цифрового общественного блага — процесс далеко не автоматический. Joomla прошла тщательную процедуру оценки, которая потребовала предоставления подробной документации и доказательств соответствия строгим стандартам.Благодаря самоотверженной работе множества участников сообщества, этот результат стал наглядным подтверждением универсальности и открытости Joomla, а также бесчисленных способов, с помощью которых она помогает людям создавать веб-решения.Это достижение подчёркивает позицию Joomla как одной из самых надёжных и гибких open-source CMS в мире — системы, которая продолжает давать возможность разработчикам, организациям и государственным структурам создавать открытые, безопасные и инклюзивные цифровые решения.Оригинал новости

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

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
recaptcha в модуль встроить
« : 14.06.2019, 21:06:20 »
Пытаюсь вставить recaptcha в контактную форму, но не отображается

в файл шаблона модуля вставляю
Код
JHtml::_('behavior.keepalive');

ниже

Код
<?php 
  JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
?>

и ниже в саму форму

Код
<div id="dynamic_recaptcha_1"></div>

в mod_contact.php вставил

Код
$post = JRequest::get('post');     
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$captcha = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);
if ($captcha[0] == false) {
    echo 'false';
} else {
    echo 'true';

Подскажите пожалуйста что не так сделал? За помощь заплачу 200 руб.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #1 : 14.06.2019, 21:39:30 »
в файл шаблона модуля вставляю
Код
 if ($captchaEngine == 'recaptcha') {
    JPluginHelper::importPlugin('captcha');
    $dispatcher = JDispatcher::getInstance();
    $dispatcher->trigger('onInit','dynamic_recaptcha_1');
    $recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""'));
и ниже в саму форму
Код
<div id="comments-form-captcha-holder">
  <?php echo (isset($recaptcha[0])) ? $recaptcha[0] : ''; ?>
</div>
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #2 : 14.06.2019, 22:13:35 »
Код
 if ($captchaEngine == 'recaptcha') {
    JPluginHelper::importPlugin('captcha');
    $dispatcher = JDispatcher::getInstance();
    $dispatcher->trigger('onInit','dynamic_recaptcha_1');
    $recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""'));
Код
<div id="comments-form-captcha-holder">
  <?php echo (isset($recaptcha[0]))? $recaptcha[0] : ''; ?>
</div>

Ну в вашем примере с if ($captchaEngine == 'recaptcha') {     вы забыли закрывающую кавычку, как я понимаю, или ошибаюсь?
в любом случаем капча появилась только если убрать строку if ($captchaEngine == 'recaptcha') {
если эту строку оставить выдает

Notice: Undefined variable: captchaEngine in /var/www/.....

если без if ($captchaEngine == 'recaptcha') {  - то да, капча появилась но не "капчит", т.е. форма отправляется и без нее.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #3 : 14.06.2019, 22:18:03 »
это вы привели кусок кода из примера в интернете как вставить капчу в jcomments как я понял.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #4 : 15.06.2019, 06:41:16 »
если без if ($captchaEngine == 'recaptcha') {  - то да, капча появилась но не "капчит", т.е. форма отправляется и без нее.
Ну да, удалите  проверку.
это вы привели кусок кода из примера в интернете как вставить капчу в jcomments
Да, но главное что рекапча появилась. Или что то смущает ?
в mod_contact.php
Код
  $post = JRequest::get('post');  
  JPluginHelper::importPlugin('captcha');
  $dispatcher = JDispatcher::getInstance();
  $result = $dispatcher->trigger('onCheckAnswer', $post['recaptcha_response_field']);
  $response->addScript('grecaptcha.reset();');
 
  if (!in_array(true, $result, true)) {
    return $response;
  }
п.с.
И если заработает код, то деньги перечислите в фонд форума.
« Последнее редактирование: 15.06.2019, 09:30:37 от draff »
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #5 : 15.06.2019, 09:51:51 »
Спасибо, я проверю если заработает я деньги вам перечислю, не вопрос, кидайте яндекс кошелек или карту в личку.

и вопрос

<div id="comments-form-captcha-holder">   этот id можно сменить на любой, или он привязан к коду проверки?
« Последнее редактирование: 15.06.2019, 10:00:13 от Mehanick »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #6 : 15.06.2019, 10:18:41 »
<div id="comments-form-captcha-holder">   этот id можно сменить на любой
можно заменить.
я проверю если заработает я деньги вам перечислю, не вопрос, кидайте Яндекс кошелек или карту в личку.
п.с.
И если заработает код, то деньги перечислите в фонд форума.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #7 : 15.06.2019, 10:25:35 »
JHtml::_('behavior.keepalive');

Подскажите пожалуйста это нужно вставлять в шаблон модуля? как я понимаю строка подгружает js-скрипт Google капчи

<script src='https://www.google.com/recaptcha/api.js'></script>

или ошибаюсь?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #8 : 15.06.2019, 11:05:43 »
Подскажите пожалуйста это нужно вставлять в шаблон модуля?
Для рекапча не нужно.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #9 : 15.06.2019, 11:34:48 »
Попробовал, капча показалась, но после добавления в mod_contact.php

Код
$post = JRequest::get('post');  
  JPluginHelper::importPlugin('captcha');
  $dispatcher = JDispatcher::getInstance();
  $result = $dispatcher->trigger('onCheckAnswer', $post['recaptcha_response_field']);
  $response->addScript('grecaptcha.reset();');
 
  if (!in_array(true, $result, true)) {
    return $response;
  }

страницу сайта выкинуло с ошибкой 0 - Пустое значение CAPTCHA недопустимо.
« Последнее редактирование: 15.06.2019, 12:00:54 от Mehanick »
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #10 : 15.06.2019, 11:35:28 »
возможно с этой страницы еще чтото взять нужно?

https://raboj.su/блог/21-joomla/109-joomla-integriruem-recaptcha-v2-no-captcha-v-jcomments.html
« Последнее редактирование: 15.06.2019, 12:02:46 от Mehanick »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #11 : 15.06.2019, 12:06:23 »
страницу сайта выкинуло с ошибкой 0 - Пустое значение CAPTCHA недопустимо.
Значит не пришло значение инпута с формы.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #12 : 15.06.2019, 12:14:25 »
какого инпута? вообще сайт не открывается с ошибкой

0 - Пустое значение CAPTCHA недопустимо.

Может код в helper нужно вставлять? где идет прием данных с формы
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #13 : 15.06.2019, 12:25:25 »
Тогда добавить проверку
Код
$post = JRequest::get('post'); 
if(empty($post['recaptcha_response_field'])) return; // Проверка на пустое значение инпута  рекапча
  JPluginHelper::importPlugin('captcha');
  $dispatcher = JDispatcher::getInstance();
  $result = $dispatcher->trigger('onCheckAnswer', $post['recaptcha_response_field']);
  $response->addScript('grecaptcha.reset();');
 
  if (!in_array(true, $result, true)) {
    return $response;
  }
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #14 : 15.06.2019, 12:27:10 »
ща заценим
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #15 : 15.06.2019, 12:37:11 »
нет, не пашет ни в главном php модуля ни в helper

Первый ваш вариант

$post = JRequest::get('post'); 
  JPluginHelper::importPlugin('captcha');
  $dispatcher = JDispatcher::getInstance();
  $result = $dispatcher->trigger('onCheckAnswer', $post['recaptcha_response_field']);
  $response->addScript('grecaptcha.reset();');
 
  if (!in_array(true, $result, true)) {
    return $response;
  }

выдавал ошибку 0 - Пустое значение CAPTCHA недопустимо в mod_contact.php, переместил в helper там другие ошибки

Notice: Undefined index: recaptcha_response_field in /var/www/.....
RuntimeException: invalid-keys

Хотя ключи правильные
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #16 : 15.06.2019, 12:39:22 »
вобщем я сделал -все работает, но вставил другим способом напрямую по инструкции с офсайта и сделал обработчик в helper.

Все шоколадно, уже потестил, супер.

Но хотелось бы применить ваше решение через api Joomla, а оно к сожалению не работает. Может не туда код вставляю.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #17 : 15.06.2019, 12:45:37 »
Хотя ключи правильные
При ошибке в проверке ключей на домен, не выводит рекапчу от Google. А если проверить что вообще пришло, может firewall блочит
Код
$post = JRequest::get('post');
echo "<pre>";var_dump($post);echo "</pre>";
if(empty($post['recaptcha_response_field'])) return;
Ну и ладно,может кто то доделают и найдет причину ошибки
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #18 : 15.06.2019, 13:27:52 »
Вобщем вот мое решение, работает, может кому-то пригодится

в файл шаблона модуля

Код
JPluginHelper::importPlugin('captcha');
   $dispatcher = JDispatcher::getInstance();
    $dispatcher->trigger('onInit','dynamic_recaptcha_1');

ниже в форму

Код
<div class="g-recaptcha" data-sitekey="ваш публичный ключ"></div>

в helper

Код
if(isset($_POST['g-recaptcha-response'])) {
   
    $captcha = $_POST['g-recaptcha-response'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $key = 'ваш секретный ключ';
    $recaptcha_response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$key.'&response='.$captcha.'&remoteip='.$ip);
    $data = json_decode($recaptcha_response);

    if(isset($data->success) &&  $data->success === true) {
        //Код если капча пройдена
        echo 'Пройдена';
    }
    else {
       //Код, если капча не пройдена
   echo 'Не пройдена';
    }
}

Идет проверка напрямую через сервер гугл.
« Последнее редактирование: 15.06.2019, 13:32:51 от Mehanick »
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #19 : 15.06.2019, 13:30:41 »
Но хотел бы попросить помощи у знающих людей, работать то работает, но в консоли висит ошибка даже когда фотма еще не отправлена.

Код
Uncaught Error: reCAPTCHA has already been rendered in this element
    at Object.nU (recaptcha__ru.js:604)
    at window.JoomlaInitReCaptchaInvisible (recaptcha.min.js?a0b983549dab8718b0e7d08cc79054de:1)
    at aQ (recaptcha__ru.js:608)
    at xE (recaptcha__ru.js:606)
    at recaptcha__ru.js:613
    at recaptcha__ru.js:633

Ошибка в консоли не есть хорошо, может кто-то поможет ее убрать, и получилось бы отличное решение.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: recaptcha в модуль встроить
« Ответ #20 : 15.06.2019, 18:26:27 »
Ошибка в консоли
проверьте ключи для домена
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: recaptcha в модуль встроить
« Ответ #21 : 15.06.2019, 18:42:54 »
немного оффтопа.
по-моему, на большинстве сайтов контактная форма уже не нужна, ибо ставится лайвчат, который её полностью замещает, если не нужна отправка файлов.
я интереса для поставил на сайт клиента всплывающую форму, в которой первое скрытое поле заполняется по клику на кнопку, вызывающую форму + одно "медовое" поле под ввод электронки, которое перекрыто реальным полем ввода.
на сервере делается простая проверка на заполнение этих полей.
в итоге за полгода ни одного спам-письма, без всяких рекапч.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: recaptcha в модуль встроить
« Ответ #22 : 15.06.2019, 19:08:09 »
проверьте ключи для домена
Если плагином то капча выводится, значит ключи правильные. Скорее всего плагин и код в модуле грузят рекапчу 2 раза.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #23 : 15.06.2019, 22:45:17 »
немного оффтопа.
по-моему, на большинстве сайтов контактная форма уже не нужна, ибо ставится лайвчат, который её полностью замещает, если не нужна отправка файлов.
я интереса для поставил на сайт клиента всплывающую форму, в которой первое скрытое поле заполняется по клику на кнопку, вызывающую форму + одно "медовое" поле под ввод электронки, которое перекрыто реальным полем ввода.
на сервере делается простая проверка на заполнение этих полей.
в итоге за полгода ни одного спам-письма, без всяких рекапч.

Я тоже в моем модуле форм сделал скрытое допполе емайл и проверку на него, если заполнено то форма не отправляет. Но на некоторых сайтах все равно спам идёт, обходят эту защиту, арифметические действия тоже обходят, на собственном опыте убедился.
Как понял самое надёжное рекапча, вот и пытаюсь ее добавить.
*

ProtectYourSite

  • Живу я здесь
  • 2368
  • 139 / 4
  • Безопасность вебсайтов
Re: recaptcha в модуль встроить
« Ответ #24 : 15.06.2019, 22:54:21 »
data-sitekey="ваш публичный ключ" - это и даёт ошибку в консоли, ключ указывается в плагине. А так идёт попытка второй раз рекапчу подгрузить.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #25 : 15.06.2019, 23:43:57 »
Спасибо, попробую исправить

<div class="g-recaptcha" data-sitekey="ваш публичный ключ"></div>

То есть насколько понял в моем случае из этой строки нужно убрать data-sitekey="ваш публичный ключ"
*

ProtectYourSite

  • Живу я здесь
  • 2368
  • 139 / 4
  • Безопасность вебсайтов
Re: recaptcha в модуль встроить
« Ответ #26 : 16.06.2019, 11:03:59 »
Думаю можно весь div убрать
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #27 : 16.06.2019, 11:11:49 »
ну весь div убрал и капча убралась, убрал из дива только data-sitekey="ваш публичный ключ" - аналогично капча убралась. Да и как без дива-то? что тогда вместо него вписывать? он как понимаю указывает место где будет стоять капча.

Ключи все правильные, на странице регистрации капча прекрасно работает без ошибок в консоли.

Помогите поправить код чтобы ошибка исчезла, или лучший вариант кода, заплачу денюжку.
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #28 : 16.06.2019, 11:23:27 »
Ну вощим я включил мозг и починил

получалось этот код

JPluginHelper::importPlugin('captcha');
   $dispatcher = JDispatcher::getInstance();
    $dispatcher->trigger('onInit','dynamic_recaptcha_1');

подгружал два раза капчу, я его убрал и заменил с офсайта на

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

все теперь работает и без ошибок
*

Mehanick

  • Давно я тут
  • 846
  • 5 / 0
Re: recaptcha в модуль встроить
« Ответ #29 : 16.06.2019, 11:25:10 »
что в итоге получилось

в файл шаблона модуля

Код
<script src="https://www.google.com/recaptcha/api.js" async defer></script>

ниже в форму

Код
<div class="g-recaptcha" data-sitekey="ваш публичный ключ"></div>

в helper

Код
if(isset($_POST['g-recaptcha-response'])) {
   
    $captcha = $_POST['g-recaptcha-response'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $key = 'ваш секретный ключ';
    $recaptcha_response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$key.'&response='.$captcha.'&remoteip='.$ip);
    $data = json_decode($recaptcha_response);

    if(isset($data->success) &&  $data->success === true) {
        //Код если капча пройдена
        echo 'Пройдена';
    }
    else {
       //Код, если капча не пройдена
   echo 'Не пройдена';
    }
}

Все работает.

Это общий вариант думаю подойдет для всех сайтов, не только на Joomla.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отредактировать модуль меню под bootstrap 4

Автор si@m

Ответов: 1
Просмотров: 728
Последний ответ 26.03.2021, 15:51:13
от gartes
reCAPTCHA+jcomments

Автор sega

Ответов: 3
Просмотров: 1039
Последний ответ 22.04.2020, 20:11:34
от wishlight
Сделать/найти установить модуль на Joomla 3

Автор bonefacei

Ответов: 1
Просмотров: 1279
Последний ответ 12.04.2020, 06:28:37
от draff
Модуль/Плагин вывода данных

Автор NightlyBlooD

Ответов: 3
Просмотров: 870
Последний ответ 30.03.2020, 15:15:23
от NightlyBlooD
Доработать модуль Joomla

Автор KatrinZ

Ответов: 3
Просмотров: 1015
Последний ответ 29.11.2019, 23:21:06
от zazar