214-697-723 |
info@mainsource.ru |
(812) 946-31-81
Все контакты
Автор статьи Синцов Роман
Подключение reCaptcha вместо стандартной капчи UMI.CMS
Сразу хочу обратить Ваше внимание, что описанный способ внедрения CAPTCHA производится на уровне ядра системы,
поэтому использовать его крайне не рекомендуется. Кроме того, эти правки могут нарушить корректную работу системы, а также
однозначно лишат Вас возможности обновления системы. Однако существуют проекты, в которых можно пожертвовать обновлением ради
того, чтобы внедрить этот инструмент защиты своего проекта от интернет-ботов.
Предложенный вариант решения будет добавлен в
и предложен разработчикам системы для внедрения в «коробку». Возможно данное решение будет видоизменено,
но то, что оно актуально — это факт.
Для тех, кому это решение нужно здесь и сейчас, описание внедрения представлено ниже.
В последнее время все больше наших клиентов сталкиваются с проблемами спама и автоматической регистрации ботами.
В связи с этим им не достаточно существующий капчи. Данная статья будет посвящена способу добавления в UMI.CMS самой,
на мой взгляд, эффективной в настоящий момент капчи —
.
Подробнее о том, как устроена reCaptcha можно почитать в
.
Важное замечание: в стандартную коробку UMI.CMS (2.8) входит популярная капча —
,
но как показала практика ее тоже бывает недостаточно.
Вариантов внедрения recaptcha в систему управления существует несколько.
Я опишу на мой взгляд наиболее демократичный и расширяемый.
В корне Вашего сайта на UMI.CMS есть config.ini, в котором указан параметр
captcha.drawer = "default"
Этот параметр задает название класса для отрисовки капчи.
Для работы recaptcha требуется приватный и публичный ключи, которые Вы уже должны были получить.
Вам необходимо изменить параметр captcha.drawer и добавить два новых параметра в config.ini:
Далее нужно скачать саму библиотеку для работы с reCaptcha.
Исходник берем .
На момент написания статьи последняя доступная версия 1.11. В загруженном архиве Вы найдете саму библиотеку
recaptchalib.php и примеры ее использования.
Эту библиотеку размещаем в следующей директории « /classes/system/utils/captcha/drawers/ ».
После этого нужно внести правки в основной класс umiCaptcha, расположенный в
« /classes/system/utils/captcha/umiCaptcha.php », в метод generateCaptcha().
В данном фрагменте кода, используя функцию recaptcha_get_html($publickey), мы получаем код нашей капчи.
В результате выполнения метода (/udata/system/captcha/) полученный нами xml будет иметь вид:
В данном фрагменте кода, используя функцию recaptcha_check_answer, осуществляем проверку правильности ввода капчи.
Подробнее о стандартных функциях библиотеки reCaptcha читаем .
Далее привожу пример шаблона для xslt-шаблонизатора:
<!--- reCapthca -->
<xsl:template match="udata[@module = 'system' and @method = 'captcha' and @type='recaptcha']">