- Главная страница
- Карта сайта McHome.ru
- Информация о организации
- Наши работы - сайты
- Услуги и цены
- Base4you
- -----------------------------
- Cофт, Crack, UpDate
- Joomla, плагины, модули
- Статьи, информация. материалы
- Заметки, новости, картинки
- -----------------------------
- Каталог ссылок
- -----------------------------
- RSS Главной страницы
- RSS Канал заметок
- RSS Канал статей
- RSS Канал ПО (soft)
- -----------------------------
- Канал ProFFight на youtube
- Я в Google +
- Я вКонтакте
- Я в фейсбуке
- Я и youtube
- Я в моём мире
- -----------------------------
- Поиск по сайту
Как включить CAPTCHA от GOOGLE на JOOMLA 1.5
Уж очень сильно последнее время боты стали одолевать рекламой в JComments 2.3.0 [20/02/2012]. Компонент отлично работает на Joomla 1.5 и менять что-либо в работе сайта я не собираюсь. Однако вопрос назрел.
Установка reCaptcha V2 на JComments 2.3.0 в независимости от версии Joomla
- Если Ваш сайт не регистрировался на reCAPTCHA, тогда вам сюда.
- Редактируем два файла компонента JComments.
- Создаем папку «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.
|