SiteHeart

Как включить CAPTCHA от GOOGLE на JOOMLA 1.5

Уж очень сильно последнее время боты стали одолевать рекламой в JComments 2.3.0 [20/02/2012]. Компонент отлично работает на Joomla 1.5 и менять что-либо в работе сайта я не собираюсь. Однако вопрос назрел.

Установка reCaptcha V2 на JComments 2.3.0 в независимости от версии Joomla

  1. Если Ваш сайт не регистрировался на reCAPTCHA, тогда вам сюда.
  2. Редактируем два файла компонента JComments.
  3. Создаем папку «recapcha» в «com_jcomments/libraries/» и заливаем туда библиотеку reCaptcha v2. Скачать ее можно тут или с гуглдиска вот тут.

Правка 1

Открываю файл components\com_jcomments\tpl\default\tpl_form.php:

Находим этот кусок кода:

if ($this->getVar('comments-form-captcha', 0) == 1) {
$html = $this->getVar('comments-form-captcha-html');
if ($html != '') {
echo $html;
} else {
$link = JCommentsFactory::getLink('captcha');
?>
<p>
<span>
<img class="captcha" onclick="jcomments.clear('captcha');" id="comments-form-captcha-image" src="/<?php echo $link; ?>" width="121" height="60" alt="<?php echo JText::_('FORM_CAPTCHA'); ?>" /><br />
<span class="captcha" onclick="jcomments.clear('captcha');"><?php echo JText::_('FORM_CAPTCHA_REFRESH'); ?></span><br />
<input class="captcha" id="comments-form-captcha" type="text" name="captcha_refid" value="" size="5" tabindex="6" /><br />
</span>
</p>
<?php
}
}
?>

Заменяем на:

if ($this->getVar('comments-form-captcha', 0) == 1) {

$captchaEngine = 'recaptcha'; //or 'kcaptcha'

if ($captchaEngine == 'recaptcha') {
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_2');
$recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_2', 'class=""'));
?>
<div id="comments-form-captcha-holder">
<div  id="dynamic_recaptcha_2"  class="g-recaptcha" data-sitekey="ВАШ ПУБЛИЧНЫЙ КЛЮЧ ДЛЯ RECAPTHA"></div>
<script src='https://www.google.com/recaptcha/api.js'></script>
</div>
<?php   
} else if ($captchaEngine == 'kcaptcha') {
$html = $this->getVar('comments-form-captcha-html');
if ($html != '') {
echo $html;
} else {
$link = JCommentsFactory::getLink('captcha');
?>
<p>
<span>
<img class="captcha" onclick="jcomments.clear('captcha');" id="comments-form-captcha-image" src="/<?php echo $link; ?>" width="121" height="60" alt="<?php echo JText::_('FORM_CAPTCHA'); ?>" /><br />
<span class="captcha" onclick="jcomments.clear('captcha');"><?php echo JText::_('FORM_CAPTCHA_REFRESH'); ?></span><br />
<input class="captcha" id="comments-form-captcha" type="text" name="captcha_refid" value="" size="5" tabindex="6" /><br />
</span>
</p>
<?php
}
}
}
?>


Правка 2

Открываю файл components\com_jcomments\jcomments.ajax.php

Находим строку:

$captchaEngine = $config->get('captcha_engine', 'kcaptcha');

Меняем на:

$captchaEngine = 'recaptcha'; //or 'kcaptcha'

if ($captchaEngine == 'recaptcha') { //ReCAPTCHA STARTING

require_once(JCOMMENTS_LIBRARIES.'/recapcha/recaptchalib.php');

$post = JRequest::get('post'); 
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();

//TESTING
$resultReCaptcha = null;
$reCaptcha = new ReCaptcha('ВАШ СЕКРЕТНЫЙ КЛЮЧ ОТ RECAPTCHA');
$resultReCaptcha = $reCaptcha->verifyResponse($_SERVER["REMOTE_ADDR"], $post["g-recaptcha-response"]);


if($resultReCaptcha->success!=1)
{   
self::showErrorMessage('Докажите что вы не робот!', 'captcha');
return $response;
}
//END ReCAPTCHA
}else


Правка 3

Заменяем в новом коде предыдущих правок надписи «ВАШ СЕКРЕТНЫЙ КЛЮЧ ОТ RECAPTCHA» и «ВАШ ПУБЛИЧНЫЙ КЛЮЧ ДЛЯ RECAPTHA» на соответствующие данные полученные при регистрации сайта в системе reCaptcha.

Для удобства я выложил на диске уже готовые файлы. Вам нужно только вставить соответственно в них свои ключи и заменить на своем сайте.

Вывод

Данное решение подойдет для тех, у кого старая версия Joomla 1x, 2x и стандартная kcaptcha компонента JComments не справляется со спамом или по другим причинам она просто не подходит.

Чтобы включить вывод капчи для соответствующих групп пользователей, открываем меню Компоненты | Components > JComments, заходим в Настройки | Settings, после чего кликаем на закладке Права | Permissions. Для выбранных групп пользователей (я рекомендую для ВСЕХ) отмечаем галку Защита от спамботов (CAPTCHA) | Enable CAPTCHA. Во вкладке же Вид | Layout в выпадающем списке CAPTCHA остается выбранным единственное значение — KCAPTCHA. Здесь это ни на что не влияет, выбор же между старой kcaptcha и новой удобной reCAPTCHA v2 осуществляется в измененном коде. Если по какой-либо причине вам захочется вернуться к родной капче компонента, просто измените строки:


1 $captchaEngine = 'recaptcha'; //or 'kcaptcha'

в обоих файлах на такие:

1 captchaEngine = 'kcaptcha'; //or 'recaptcha'



Найдено тут.


 

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


На сайте работает система коррекции ошибок. Для исправления выделите текст и нажмите Shift+Enter.

счетчик посещений IT аутсорсинг

Яндекс.Метрика
Ваш персональный технический отдел
Санкт-Петербург +7-921-3130022
ИП Яхно Кирилл Константинович
ОГРНИП 309784727300653