Модуль CMS Bitrix для работы с сервисом Некапча Mail.Ru.
Некапча - это интеллектуальный сервис капчи, способный избавить большинство реальных пользователей от разгадывания рисунка капчи, вместе с тем не ухудшая защиту от спам-ботов. Сервис успешно используется как в наших внутренних проектах, так и на сайтах, не связанных с Mail.Ru.
Подробнее: сайт, документация, статья на Хабрахабре
Обратная связь: nocaptcha@corp.mail.ru
Перед использованием модуля необходимо зарегистрировать свой домен на сайте Некапчи.
-
Копируем директорию nocaptcha в bitrix/modules.
-
Устанавливаем модуль в административной панели в разделе Настройки > Настройки продукта > Модули.
-
Настраиваем модуль в административной панели в разделе Настройки > Настройки продукта > Настройки модулей > Некапча Mail.Ru.
- Публичный и секретный ключ
-
Ключи для генерации скрипта Некапчи и проверки введенного кода. Создаются при регистрации домена на сайте Некапчи.
- Использовать русскоязычный виджет для языков (через запятую)
-
Коды языков, для которых виджет будет отображаться на русском языке. Для всех других языков - на английском. Пример:
ru,be,kz,uk
. - Заменить стандартную капчу (требуется отредактировать шаблоны)
-
Позволяет заменить стандартную капчу CMS Bitrix на Некапчу Mail.Ru. Для полной замены требуется отредактировать шаблоны, где используется стандартная капча.
Виджет можно встроить в визуальном редакторе. Он расположен в списке компонентов Компоненты > Служебные > Виджет Некапчи Mail.Ru.
Другим способом добавления является вызов компонента из кода:
global $APPLICATION;
$APPLICATION->IncludeComponent("mailru:nocaptcha.widget", "");
Встраивание скрипта и настроек в head
страницы, добавление контейнера происходит
автоматически.
Доступные параметры компонента:
ID
-
ID контейнера. По умолчанию генерируется автоматически.
TABINDEX
-
tabindex поля для ввода кода. Требуется для корректной настройки последовательности переключения полей по TAB.
global $APPLICATION;
$APPLICATION->IncludeComponent("mailru:nocaptcha.widget", "",
array("TABINDEX" => "4"));
Шаблон компонента всегда используется стандартный и менять его нельзя.
Если виджет Некапчи встроен в форму корректно, то в обработчик передаются
параметры captcha_id
и captcha_value
. Пример кода для проверки капчи:
CModule::IncludeModule("nocaptcha");
if (CNocaptcha::GetInstance()->Check($_REQUEST["captcha_id"],
$_REQUEST["captcha_value"]) === true)
{
// ок
}
else
{
// введен неверный код
}
Если в настройках установлена замена стандартной капчи, то для проверки можно
использовать стандартную функцию CaptchaCheckCode()
:
global $APPLICATION;
if ($APPLICATION->CaptchaCheckCode($_REQUEST["captcha_value"],
$_REQUEST["captcha_id"]))
{
// ок
}
else
{
// введен неверный код
}
-
Если шаблон системный, то копируем его в текущий шаблон сайта. Например, из bitrix/components/bitrix/system.auth.registration/templates/.default в bitrix/templates/my_site_template/components/bitrix/system.auth.registration/.default.
-
В шаблоне заменяем верстку стандартной капчи на вызов компонента виджета Некапчи.
Было:
<? if ($arResult["USE_CAPTCHA"] == "Y") { ?> <tr> <td colspan="2"><b><?=GetMessage("CAPTCHA_REGF_TITLE")?></b></td> </tr> <tr> <td></td> <td> <input type="hidden" name="captcha_sid" value="<?=$arResult["CAPTCHA_CODE"]?>" /> <img src="/bitrix/tools/captcha.php?captcha_sid=<?=$arResult["CAPTCHA_CODE"]?>" width="180" height="40" alt="CAPTCHA" /> </td> </tr> <tr> <td><span class="starrequired">*</span><?=GetMessage("CAPTCHA_REGF_PROMT")?>:</td> <td><input type="text" name="captcha_word" maxlength="50" value="" /></td> </tr> <? } ?>
Стало:
<? if ($arResult["USE_CAPTCHA"] == "Y") { ?> <tr> <td colspan="2"><b><?=GetMessage("CAPTCHA_REGF_TITLE")?></b></td> </tr> <tr> <td><span class="starrequired">*</span></td> <td><? $APPLICATION->IncludeComponent("mailru:nocaptcha.widget"); ?></td> </tr> <? } ?>