Логотип

Документация по макросам и шаблонам UMI.CMS

system captcha()

Название

%system captcha()% — Выводит CAPTCHA.

Параметры: %system captcha( [template = 'default'], [captchaId = ''] )%

template

Имя шаблона, по которому следует вывести CAPTCHA. В XSLT-шаблонизаторе игнорируется.

captchaId

Идентификатор CAPTCHA (для вывода нескольких CAPTCHA на одной странице)

Описание

CAPTCHACompletely Automated Public Turing test to tell Computers and Humans Apart») используется для того, чтобы защитить Ваш сайт от спама. Например, чтобы запретить роботам автоматически размещать комментарии или сообщения на форум.

Вывод CAPTCHA осуществляется по шаблону, указанному в параметре template. Вы можете не указывать этот параметр, в этом случае для вывода будет использован шаблон по умолчанию — default.tpl.

CAPTCHA показывается неавторизованным пользователям, которые за время действия сессии не вводили правильно CAPTCHA. В случае, если пользователь написал сообщение, добавил комментарий или совершил любое другое действие, связанное с вводом CAPTCHA, система считает, что пользователь подтвердил, что он не робот, и CAPTCHA ему показывать не обязательно.

С версии 15 результат работы макроса будет меняться в зависимости от типа каптчи.

<?=$this->render($this->macros('system', 'captcha'), 'library/captcha')?>

Пример вызова

udata://system/captcha

XML-ответ UData классической каптчи

<udata  
  random_string="?1258628055" 
  module="system" method="captcha"
  generation-time="0.080598">
  <url random-string="?1451549090" id_param="captcha_id" id="id">/captcha.php</url>
</udata>

Элементы и атрибуты классической каптчи

<udata>

@random_string

Строка, которая используется для добавления в URL картинки с защитным кодом, чтобы избежать кэширования браузерами.

<url>

Url, по которому запрашивается картинка с защитным кодом.

<id_param>

Имя параметра, который нужно передать со значением идентификатора CAPTCHA (для прохождения проверки конкректной CAPTCHA) .

<id>

Идентификатор CAPTCHA (для размещения нескольких CAPTCHA на одной странице).

XML-ответ UData Google ReCAPTCHA

<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="system" method="captcha" generation-time="0.005114">
<recaptcha-url>https://www.google.com/recaptcha/api.js</recaptcha-url>
<recaptcha-class>g-recaptcha</recaptcha-class>
<recaptcha-sitekey>dsfsdfs</recaptcha-sitekey>
</udata

Пример использования

Для использования CAPTCHA укажите в шаблоне вывода формы следующую инструкцию:

<xsl:apply-templates select="document('udata://system/captcha//id')/udata[url]" />

Если пользователь авторизовался или за время действия сессии уже правильно ввел проверочный код, то ответ UData не будет содержать элемента url.

Шаблон вывода классической CAPTCHA можно оформить так:

<xsl:template match="udata[@method='captcha']">
  <label for="captcha" id="for_captcha" title="Защитный код">
    <input type="text" name="captcha" id="captcha"/>
    <img src="{url}{@random_string}" />
  </label>
</xsl:template>

Шаблон вывода Google ReCaptcha можно оформить так:

<xsl:template match="udata[@module = 'system' and @method = 'captcha' and count(recaptcha-url) > 0]">
  <div>
    <label>
      <script src='{recaptcha-url}?hl=ru'></script>
      <div class="{recaptcha-class}" data-sitekey="{recaptcha-sitekey}"></div>
    </label>
  </div>
</xsl:template>

Пример вызова

%system captcha('sample', 'id')%

Используемые шаблоны

Макрос оперирует шаблонами, находящимися в каталоге /tpls/captcha/.

Используемые блоки шаблона

captcha

Выводит блок оформления классической CAPTCHA

%input_id%

id поля ввода

recaptcha

Выводит блок оформления Google ReCAPTCHA

%input_id%

id поля ввода.

%recaptcha-url%

Адрес сервиса Google ReCAPTCHA.

%recaptcha-class%

Класс html контейнера для каптчи.

%recaptcha-sitekey%

Ключ сайта.