├── .gitignore
├── mailru.nocaptcha
├── lang
│ ├── ru
│ │ ├── options.php
│ │ └── install
│ │ │ └── index.php
│ └── en
│ │ ├── install
│ │ └── index.php
│ │ └── options.php
├── prolog.php
├── install
│ ├── version.php
│ ├── components
│ │ └── mailru
│ │ │ └── nocaptcha.widget
│ │ │ ├── lang
│ │ │ ├── en
│ │ │ │ ├── .parameters.php
│ │ │ │ └── .description.php
│ │ │ └── ru
│ │ │ │ ├── .parameters.php
│ │ │ │ └── .description.php
│ │ │ ├── images
│ │ │ └── nocaptcha.gif
│ │ │ ├── templates
│ │ │ └── .default.php
│ │ │ ├── component.php
│ │ │ ├── .description.php
│ │ │ └── .parameters.php
│ └── index.php
├── default_option.php
├── include.php
├── classes
│ └── general
│ │ ├── captcha.php
│ │ └── nocaptcha.php
└── options.php
├── SConstruct
└── README.asciidoc
/.gitignore:
--------------------------------------------------------------------------------
1 | .*.tar.gz
2 | .sconsign.dblite
3 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/lang/ru/options.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mailru/nocaptcha-bitrix/master/mailru.nocaptcha/lang/ru/options.php
--------------------------------------------------------------------------------
/mailru.nocaptcha/prolog.php:
--------------------------------------------------------------------------------
1 |
2 | IncludeModuleLangFile(__FILE__);
3 | define("ADMIN_MODULE_NAME", "mailru.nocaptcha");
4 | ?>
5 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/lang/ru/install/index.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mailru/nocaptcha-bitrix/master/mailru.nocaptcha/lang/ru/install/index.php
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/version.php:
--------------------------------------------------------------------------------
1 |
2 | $arModuleVersion = array(
3 | "VERSION" => "0.1.0",
4 | "VERSION_DATE" => "2015-05-25 11:50:19",
5 | );
6 | ?>
7 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/lang/en/install/index.php:
--------------------------------------------------------------------------------
1 |
2 | $MESS["NOCAPTCHA_NAME"] = "Nocaptcha Mail.Ru";
3 | $MESS["NOCAPTCHA_DESCRIPTION"] = "Module for working with API of Nocaptcha Mail.Ru";
4 | ?>
5 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/lang/en/.parameters.php:
--------------------------------------------------------------------------------
1 |
2 | $MESS["NOCAPTCHA_WIDGET_ID"] = "Container ID";
3 | $MESS["NOCAPTCHA_WIDGET_TABINDEX"] = "Field tabindex";
4 | ?>
5 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/default_option.php:
--------------------------------------------------------------------------------
1 |
2 | $nocaptcha_default_option = array(
3 | "public_key" => "",
4 | "private_key" => "",
5 | "ru_langs" => "ru,be,uk,kz",
6 | "replace" => "N",
7 | );
8 | ?>
9 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/images/nocaptcha.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mailru/nocaptcha-bitrix/master/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/images/nocaptcha.gif
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/lang/ru/.parameters.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mailru/nocaptcha-bitrix/master/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/lang/ru/.parameters.php
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/lang/ru/.description.php:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mailru/nocaptcha-bitrix/master/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/lang/ru/.description.php
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/templates/.default.php:
--------------------------------------------------------------------------------
1 |
" if (isset($arParams["TABINDEX"]) && $arParams["TABINDEX"] != "") echo ' data-tabindex="' . $arParams["TABINDEX"] . '"'; ?>>
2 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/lang/en/.description.php:
--------------------------------------------------------------------------------
1 |
2 | $MESS["NOCAPTCHA_WIDGET_NAME"] = "Nocaptcha Mail.Ru widget";
3 | $MESS["NOCAPTCHA_WIDGET_DESCRIPTION"] = "Component to protect forms from automated scripts.";
4 | ?>
5 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/lang/en/options.php:
--------------------------------------------------------------------------------
1 |
2 | $MESS["NOCAPTCHA_PUBLIC_KEY"] = "Public key";
3 | $MESS["NOCAPTCHA_PRIVATE_KEY"] = "Private key";
4 | $MESS["NOCAPTCHA_RU_LANGS"] = "Use Russian language widget for languages (comma-separated)";
5 | $MESS["NOCAPTCHA_REPLACE"] = "Replace default CAPTCHA (need to edit templates)";
6 | ?>
7 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/include.php:
--------------------------------------------------------------------------------
1 |
2 | CModule::AddAutoloadClasses("mailru.nocaptcha", array("CNocaptcha" => "classes/general/nocaptcha.php"));
3 | if (COption::GetOptionString("mailru.nocaptcha", "replace", "N") === "Y")
4 | {
5 | require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/mailru.nocaptcha/classes/general/captcha.php");
6 | }
7 | ?>
8 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/component.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | CModule::IncludeModule("mailru.nocaptcha");
4 |
5 | if (isset($arParams["ID"]) && $arParams["ID"] != "")
6 | {
7 | $arResult["ID"] = $arParams["ID"];
8 | CNocaptcha::GetInstance()->AddContainerId($arResult["ID"]);
9 | }
10 | else
11 | {
12 | $arResult["ID"] = CNocaptcha::GetInstance()->GenerateContainerId();
13 | }
14 | $this->IncludeComponentTemplate();
15 | ?>
16 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/.description.php:
--------------------------------------------------------------------------------
1 |
2 | if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
3 |
4 | IncludeModuleLangFile(__FILE__);
5 |
6 | $arComponentDescription = array(
7 | "NAME" => GetMessage("NOCAPTCHA_WIDGET_NAME"),
8 | "DESCRIPTION" => GetMessage("NOCAPTCHA_WIDGET_DESCRIPTION"),
9 | "ICON" => "/images/nocaptcha.gif",
10 | "PATH" => array(
11 | "ID" => "utility",
12 | ),
13 | );
14 | ?>
15 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/components/mailru/nocaptcha.widget/.parameters.php:
--------------------------------------------------------------------------------
1 |
2 | if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
3 |
4 | $arComponentParameters = array(
5 | "PARAMETERS" => array(
6 | "ID" => array(
7 | "NAME" => GetMessage("NOCAPTCHA_WIDGET_ID"),
8 | "TYPE" => "STRING",
9 | "DEFAULT" => "",
10 | "PARENT" => "BASE",
11 | ),
12 | "TABINDEX" => array(
13 | "NAME" => GetMessage("NOCAPTCHA_WIDGET_TABINDEX"),
14 | "TYPE" => "STRING",
15 | "DEFAULT" => "",
16 | "PARENT" => "BASE",
17 | ),
18 | ),
19 | );
20 | ?>
21 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/classes/general/captcha.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | if (array_key_exists('captcha_id', $_POST))
4 | {
5 | $_POST['captcha_sid'] = $_POST['captcha_id'];
6 | $_REQUEST['captcha_sid'] = $_REQUEST['captcha_id'];
7 | $_POST['captcha_word'] = $_POST['captcha_value'];
8 | $_REQUEST['captcha_word'] = $_REQUEST['captcha_value'];
9 | }
10 |
11 | class CCaptcha
12 | {
13 | public function CheckCode($captchaValue, $captchaId)
14 | {
15 | CModule::IncludeModule('mailru.nocaptcha');
16 | if (CNocaptcha::GetInstance()->Check($captchaId, $captchaValue) === true)
17 | return true;
18 | return false;
19 | }
20 |
21 | public function CheckCodeCrypt($captchaValue, $captchaId,
22 | $password = '', $bUpperCode = true)
23 | {
24 | return $this->CheckCode($captchaValue, $captchaId);
25 | }
26 |
27 | public function SetCode()
28 | {
29 | }
30 |
31 | public function GetSID()
32 | {
33 | return 'fake_sid';
34 | }
35 | }
36 | ?>
37 |
--------------------------------------------------------------------------------
/SConstruct:
--------------------------------------------------------------------------------
1 | import os, re
2 | from copy import deepcopy
3 | from datetime import datetime
4 |
5 | vars = Variables()
6 | vars.Add(EnumVariable('P', 'Part of the version to increment', 'p',
7 | allowed_values=('M', 'm', 'p')))
8 | env = Environment(variables=vars)
9 | Help(vars.GenerateHelpText(env))
10 |
11 | def parse_version(file):
12 | with open(file, 'r') as f:
13 | for line in f:
14 | match = re.search('[\\\'\\\"]VERSION[\\\'\\\"][^\d]+(\d+)\.(\d+)\.(\d+)', line)
15 | if not match:
16 | continue
17 | return [int(v) for v in deepcopy(match.group(1, 2, 3))]
18 | raise ValueError(u"Invalid version.php file format.")
19 |
20 | def generate_version(file, vers):
21 | vers = u"{0}.{1}.{2}".format(*vers)
22 | date = datetime.today().strftime(u"%Y-%m-%d %H:%M:%S")
23 | data = u"""
24 | $arModuleVersion = array(
25 | "VERSION" => "{0}",
26 | "VERSION_DATE" => "{1}",
27 | );
28 | ?>
29 | """
30 | data = data.format(vers, date)
31 | with open(file, 'w') as f:
32 | f.writelines(data.encode('utf8'))
33 |
34 | def increment_version(target, source, env):
35 | vers = parse_version('mailru.nocaptcha/install/version.php')
36 | inc = env.get('P', 'p')
37 | if inc == 'M':
38 | vers[0] += 1
39 | vers[1] = 0
40 | vers[2] = 0
41 | elif inc == 'm':
42 | vers[1] += 1
43 | vers[2] = 0
44 | else:
45 | vers[2] += 1
46 | generate_version('mailru.nocaptcha/install/version.php', vers)
47 |
48 | inc_version = env.Command('vers', '', increment_version)
49 |
50 | last_version = env.Command('.last_version', 'mailru.nocaptcha', [
51 | Copy('.last_version', 'mailru.nocaptcha'),
52 | 'tar -czf .last_version.tar.gz .last_version',
53 | Delete('.last_version')])
54 |
55 | env.AlwaysBuild(last_version)
56 | env.Default(last_version)
57 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/install/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | IncludeModuleLangFile(__FILE__);
4 |
5 | $PathInstall = str_replace("\\", "/", __FILE__);
6 | $PathInstall = substr($PathInstall, 0, strlen($PathInstall) - strlen("/index.php"));
7 | include($PathInstall."/version.php");
8 | define(BX_NOCAPTCHA_VERSION, $arModuleVersion["VERSION"]);
9 | define(BX_NOCAPTCHA_VERSION_DATE, $arModuleVersion["VERSION_DATE"]);
10 |
11 | if(class_exists("mailru_nocaptcha"))
12 | {
13 | return;
14 | }
15 |
16 | class mailru_nocaptcha extends CModule
17 | {
18 | var $MODULE_ID = "mailru.nocaptcha";
19 | var $MODULE_VERSION;
20 | var $MODULE_VERSION_DATE;
21 | var $MODULE_NAME;
22 | var $MODULE_DESCRIPTION;
23 | var $MODULE_CSS;
24 | var $PARTNER_NAME;
25 | var $PARTNER_URI;
26 |
27 | function __construct()
28 | {
29 | $this->MODULE_VERSION = BX_NOCAPTCHA_VERSION;
30 | $this->MODULE_VERSION_DATE = BX_NOCAPTCHA_VERSION_DATE;
31 | $this->MODULE_NAME = GetMessage("NOCAPTCHA_NAME");
32 | $this->MODULE_DESCRIPTION = GetMessage("NOCAPTCHA_DESCRIPTION");
33 | $this->PARTNER_NAME = "Mail.Ru Group";
34 | $this->PARTNER_URI = "http://corp.mail.ru";
35 | }
36 |
37 | function InstallFiles()
38 | {
39 | CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/components",
40 | $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", true, true);
41 | }
42 |
43 | function UnInstallFiles()
44 | {
45 | DeleteDirFilesEx("bitrix/components/mailru/nocaptcha.widget");
46 | DeleteDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$this->MODULE_ID."/install/components",
47 | $_SERVER["DOCUMENT_ROOT"]."/bitrix/components");
48 | }
49 |
50 | function DoInstall()
51 | {
52 | $this->InstallFiles();
53 | RegisterModuleDependences("main", "OnPageStart", $this->MODULE_ID);
54 | RegisterModule($this->MODULE_ID);
55 | }
56 |
57 | function DoUninstall()
58 | {
59 | $this->UnInstallFiles();
60 | UnRegisterModuleDependences("main", "OnPageStart", $this->MODULE_ID);
61 | UnRegisterModule($this->MODULE_ID);
62 | }
63 | }
64 | ?>
65 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/classes/general/nocaptcha.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/mailru.nocaptcha/default_option.php");
4 |
5 | class CNocaptcha
6 | {
7 | const API_SERVER = "https://api-nocaptcha.mail.ru";
8 |
9 | var $publicKey;
10 | var $privateKey;
11 | var $arRuLangs;
12 | var $nextId = 0;
13 | var $arSettings = array();
14 |
15 | public static function GetInstance()
16 | {
17 | static $instance = null;
18 | if ($instance === null)
19 | $instance = new static();
20 | AddEventHandler("main", "OnEpilog",
21 | array("CNocaptcha", "AddSettingsAndScript"));
22 | return $instance;
23 | }
24 |
25 | protected function __construct()
26 | {
27 | $this->publicKey = COption::GetOptionString("mailru.nocaptcha", "public_key",
28 | $nocaptcha_default_option["public_key"]);
29 | $this->privateKey = COption::GetOptionString("mailru.nocaptcha", "private_key",
30 | $nocaptcha_default_option["private_key"]);
31 | $t = COption::GetOptionString("mailru.nocaptcha", "ru_langs",
32 | $nocaptcha_default_option["ru_langs"]);
33 | $this->arRuLangs = preg_split("/[^[:alnum:]]+/", $t, -1, PREG_SPLIT_NO_EMPTY);
34 | }
35 |
36 | private function __clone()
37 | {
38 | }
39 |
40 | private function __wakeup()
41 | {
42 | }
43 |
44 | private static function JoinParams($params)
45 | {
46 | if (!count($params))
47 | return "";
48 | $ret = array();
49 | foreach ($params as $key => $val)
50 | {
51 | $ret[] = $key."=".urlencode(stripslashes($val));
52 | }
53 | return "?".join("&", $ret);
54 | }
55 |
56 | private function GenerateSettings()
57 | {
58 | if (!in_array(LANGUAGE_ID, $this->arRuLangs))
59 | $this->arSettings["lang"] = "en";
60 | return "var nocaptchaSettings=".json_encode($this->arSettings).";";
61 | }
62 |
63 | private function GenerateScriptUrl()
64 | {
65 | $params = array("public_key" => $this->publicKey);
66 | return self::API_SERVER."/captcha".self::JoinParams($params);
67 | }
68 |
69 | public static function AddSettingsAndScript()
70 | {
71 | global $APPLICATION;
72 | $inst = self::GetInstance();
73 | $APPLICATION->AddHeadString('');
75 | $APPLICATION->AddHeadScript($inst->GenerateScriptUrl());
76 | }
77 |
78 | public function Check($captchaId, $captchaValue)
79 | {
80 | $params = array(
81 | "private_key" => $this->privateKey,
82 | "captcha_id" => $captchaId,
83 | "captcha_value" => $captchaValue,
84 | );
85 | $url = self::API_SERVER."/check".self::JoinParams($params);
86 |
87 | $resp = @file_get_contents($url);
88 | if($resp === false)
89 | {
90 | return "request failed";
91 | }
92 | $data = json_decode($resp);
93 | if (!$data)
94 | {
95 | return "invalid response";
96 | }
97 | if ($data->status !== "ok")
98 | {
99 | return "service returned an error: ".$data->desc;
100 | }
101 | if (!$data->is_correct)
102 | {
103 | return false;
104 | }
105 | return true;
106 | }
107 |
108 | public function AddContainerId($id)
109 | {
110 | if (!isset($this->arSettings["containers"]))
111 | $this->arSettings["containers"] = array();
112 | $this->arSettings["containers"][] = $id;
113 | }
114 |
115 | public function GenerateContainerId()
116 | {
117 | $id = "nocaptcha".$this->nextId++;
118 | $this->AddContainerId($id);
119 | return $id;
120 | }
121 | }
122 | ?>
123 |
--------------------------------------------------------------------------------
/mailru.nocaptcha/options.php:
--------------------------------------------------------------------------------
1 |
2 | if (!$USER->IsAdmin())
3 | return;
4 |
5 | define(BX_NOCAPTCHA_MODULE_ID, "mailru.nocaptcha");
6 |
7 | IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/options.php");
8 | IncludeModuleLangFile(__FILE__);
9 |
10 | require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".BX_NOCAPTCHA_MODULE_ID."/default_option.php");
11 |
12 | $options = array(
13 | array("public_key", GetMessage("NOCAPTCHA_PUBLIC_KEY"), $nocaptcha_default_option["public_key"],
14 | array("text", 40, 64, false)),
15 | array("private_key", GetMessage("NOCAPTCHA_PRIVATE_KEY"), $nocaptcha_default_option["private_key"],
16 | array("text", 40, 64, true)),
17 | array("ru_langs", GetMessage("NOCAPTCHA_RU_LANGS"), $nocaptcha_default_option["ru_langs"],
18 | array("text", 40, 20, false)),
19 | array("replace", GetMessage("NOCAPTCHA_REPLACE"), $nocaptcha_default_option["replace"],
20 | array("checkbox")),
21 | );
22 |
23 | $tabs = array(
24 | array("DIV" => "edit1",
25 | "TAB" => GetMessage("MAIN_TAB_SET"),
26 | "ICON" => "ib_settings",
27 | "TITLE" => GetMessage("MAIN_TAB_TITLE_SET")),
28 | );
29 |
30 | $tabControl = new CAdminTabControl("tabControl", $tabs);
31 |
32 | if ($REQUEST_METHOD == "POST" && strlen($Update . $Apply . $RestoreDefaults) > 0
33 | && check_bitrix_sessid())
34 | {
35 | if (strlen($RestoreDefaults) > 0)
36 | COption::RemoveOption(BX_NOCAPTCHA_MODULE_ID);
37 | else
38 | {
39 | foreach ($options as $option)
40 | {
41 | $name = $option[0];
42 | $val = $_REQUEST[$name];
43 | if ($option[2][0] == "checkbox" && $val != "Y")
44 | $val = "N";
45 | COption::SetOptionString(BX_NOCAPTCHA_MODULE_ID, $name, $val, $caption);
46 | }
47 | }
48 | if (strlen($Update) > 0 && strlen($_REQUEST["back_url_settings"]) > 0)
49 | LocalRedirect($_REQUEST["back_url_settings"]);
50 | else
51 | LocalRedirect($APPLICATION->GetCurPage() . "?mid=" . urlencode($mid) . "&lang=" . urlencode(LANGUAGE_ID) . "&back_url_settings=" . urlencode($_REQUEST["back_url_settings"]) . "&" . $tabControl->ActiveTabParam() . "&mid_menu=1");
52 | }
53 |
54 | $tabControl->Begin();
55 | ?>
56 |
92 |
--------------------------------------------------------------------------------
/README.asciidoc:
--------------------------------------------------------------------------------
1 | nocaptcha-bitrix
2 | ================
3 |
4 | == Краткое описание
5 |
6 | Модуль CMS Bitrix для работы с сервисом Некапча Mail.Ru.
7 |
8 | Некапча - это интеллектуальный сервис капчи, способный избавить большинство
9 | реальных пользователей от разгадывания рисунка капчи, вместе с тем не ухудшая
10 | защиту от спам-ботов. Сервис успешно используется как в наших внутренних
11 | проектах, так и на сайтах, не связанных с Mail.Ru.
12 |
13 | Подробнее: https://nocaptcha.mail.ru[сайт],
14 | https://nocaptcha.mail.ru/docs[документация],
15 | http://habrahabr.ru/company/mailru/blog/255633/[статья на Хабрахабре]
16 |
17 | Обратная связь: nocaptcha@corp.mail.ru
18 |
19 | == Установка
20 |
21 | Перед использованием модуля необходимо зарегистрировать свой домен на
22 | https://nocaptcha.mail.ru[сайте Некапчи].
23 |
24 | 1. Копируем директорию _nocaptcha_ в _bitrix/modules_.
25 | 2. Устанавливаем модуль в административной панели в разделе _Настройки >
26 | Настройки продукта > Модули_.
27 | 3. Настраиваем модуль в административной панели в разделе _Настройки >
28 | Настройки продукта > Настройки модулей > Некапча Mail.Ru_.
29 |
30 | == Настройка
31 |
32 | Публичный и секретный ключ::
33 | Ключи для генерации скрипта Некапчи и проверки введенного кода.
34 | Создаются при регистрации домена на сайте Некапчи.
35 |
36 | Использовать русскоязычный виджет для языков (через запятую)::
37 | Коды языков, для которых виджет будет отображаться на русском языке. Для
38 | всех других языков - на английском. Пример: +ru,be,kz,uk+.
39 |
40 | Заменить стандартную капчу (требуется отредактировать шаблоны)::
41 | Позволяет заменить стандартную капчу CMS Bitrix на Некапчу Mail.Ru. Для
42 | полной замены требуется отредактировать шаблоны, где используется
43 | стандартная капча.
44 |
45 | == Использование
46 |
47 | === Добавление виджета
48 |
49 | Виджет можно встроить в визуальном редакторе. Он расположен в списке
50 | компонентов _Компоненты > Служебные > Виджет Некапчи Mail.Ru_.
51 |
52 | Другим способом добавления является вызов компонента из кода:
53 |
54 | [source,php]
55 | ----
56 | global $APPLICATION;
57 | $APPLICATION->IncludeComponent("mailru:nocaptcha.widget", "");
58 | ----
59 |
60 | Встраивание скрипта и настроек в +head+ страницы, добавление контейнера происходит
61 | автоматически.
62 |
63 | Доступные параметры компонента:
64 |
65 | +ID+:: ID контейнера. По умолчанию генерируется автоматически.
66 | +TABINDEX+:: tabindex поля для ввода кода. Требуется для корректной
67 | настройки последовательности переключения полей по TAB.
68 |
69 | [source,php]
70 | ----
71 | global $APPLICATION;
72 | $APPLICATION->IncludeComponent("mailru:nocaptcha.widget", "",
73 | array("TABINDEX" => "4"));
74 | ----
75 |
76 | Шаблон компонента всегда используется стандартный и менять его нельзя.
77 |
78 | === Проверка введенного кода
79 |
80 | Если виджет Некапчи встроен в форму корректно, то в обработчик передаются
81 | параметры +captcha_id+ и +captcha_value+. Пример кода для проверки капчи:
82 |
83 | [source,php]
84 | ----
85 | CModule::IncludeModule("nocaptcha");
86 | if (CNocaptcha::GetInstance()->Check($_REQUEST["captcha_id"],
87 | $_REQUEST["captcha_value"]) === true)
88 | {
89 | // ок
90 | }
91 | else
92 | {
93 | // введен неверный код
94 | }
95 | ----
96 |
97 | Если в настройках установлена замена стандартной капчи, то для проверки можно
98 | использовать стандартную функцию +CaptchaCheckCode()+:
99 |
100 | [source,php]
101 | ----
102 | global $APPLICATION;
103 | if ($APPLICATION->CaptchaCheckCode($_REQUEST["captcha_value"],
104 | $_REQUEST["captcha_id"]))
105 | {
106 | // ок
107 | }
108 | else
109 | {
110 | // введен неверный код
111 | }
112 | ----
113 |
114 | == FAQ
115 |
116 | === Как отредактировать шаблон со стандартной капчей?
117 |
118 | 1. Если шаблон системный, то копируем его в текущий шаблон сайта. Например, из
119 | _bitrix/components/bitrix/system.auth.registration/templates/.default_ в
120 | _bitrix/templates/my_site_template/components/bitrix/system.auth.registration/.default_.
121 | 2. В шаблоне заменяем верстку стандартной капчи на вызов компонента виджета
122 | Некапчи.
123 | +
124 | Было:
125 | +
126 | [source,php]
127 | ----
128 |
129 | if ($arResult["USE_CAPTCHA"] == "Y")
130 | {
131 | ?>
132 |
133 | =GetMessage("CAPTCHA_REGF_TITLE")?>
134 |
135 |
136 |
137 |
138 | " />
139 | " width="180" height="40" alt="CAPTCHA" />
140 |
141 |
142 |
143 | * =GetMessage("CAPTCHA_REGF_PROMT")?>:
144 |
145 |
146 |
147 | }
148 | ?>
149 | ----
150 | +
151 | Стало:
152 | +
153 | [source,php]
154 | ----
155 |
156 | if ($arResult["USE_CAPTCHA"] == "Y")
157 | {
158 | ?>
159 |
160 | =GetMessage("CAPTCHA_REGF_TITLE")?>
161 |
162 |
163 | *
164 | $APPLICATION->IncludeComponent("mailru:nocaptcha.widget"); ?>
165 |
166 |
167 | }
168 | ?>
169 | ----
170 |
171 | == Лицензия
172 |
173 | image:http://i.creativecommons.org/p/zero/1.0/88x31.png["CC0",link="http://creativecommons.org/publicdomain/zero/1.0/"]
174 |
175 | По мере возможности в соответствии с законодательством, Mail.Ru отказался от
176 | всех авторских прав и смежных прав на модуль CMS Bitrix для работы с сервисом
177 | Некапча Mail.Ru
178 |
--------------------------------------------------------------------------------