Сервис предназначен для защиты форм от автоматического ввода различного рода скриптами-роботами. Пользователю показывается картинка, цифры и буквы на которой с большой вероятностью может распознать только человек. CAPTCHA - "completely automated public Turing test to tell computers and humans apart", что в переводе означает "полностью автоматизированный общедоступный тест Тьюринга на разделение машин и людей".
| width |
Число, указывающее ширину картинки с контрольной строкой в пикселах. Если параметр не задан или пустой, принимается значение 150px. |
| height |
Число, указывающее высоту картинки с контрольной строкой в пикселах. Если параметр не задан или пустой, принимается значение 50px. |
| code_length |
Число, указывающее длину контрольной строки. Если параметр не задан или пустой, принимается значение 6. |
| params |
HTML строка, которая добавляется в тэг IMG при формировании картинки с контрольной строкой. |
| part |
Строка, определяющая что именно рисовать на странице. Принимает одно из следующих значений:
- image (рисует картинку)
- field (рисует поле для ввода)
- both (рисует все вместе)
Если ключ не задан или пустой, принимается значение both. |
Данный макрос позволяет встроить в любую форму два блока: графический (с искаженными цифрами и буквами) и поле для ввода строки человеком. Если введенная в форме строка совпадает с изображенной на картинке, то в дальнейшем защищенная форма отрабатывается как обычная. Все действия по информированию пользователя об ошибке производятся уже с участием макроса $Form[]$.
Поскольку новое поле ввода и картинка влияют на дизайн формы, макрос можно использовать для раздельного вывода картинки и формы ввода контрольной строки там, где это согласуется с дизайном сайта.
На одной странице может находиться только одна макроподстановка $Captcha[]$ (или одна пара вызовов, если рисуется отдельно графика и отдельно поле ввода).
Для работы данного макроса необходима графическая библиотека ImageMagick.
Если Captcha выводится "в два приема" (поле ввода - отдельно, графика - отдельно), то генерация самого контрольного изображения будет произведено уже во время первого вызова макроса. А это означает, что если вы хотите передавать параметры в макрос, управляющие внешним видом (например, ключ code_length), то делать это придется в первом вызове, независимо от того что вы отрисовываете - графику или поле ввода. Во втором вызове макроса все такие ключи будут проигнорированы.
Пример №1
Вывод картинки и поля ввода строки
$Captcha[width: 150; height: 50; code_length: 6; params="border=0 style='cursor: hand'"; part: both]$
Пример №2
Раздельный вывод картинки и поля для ввода строки
<TABLE cellSpacing=0 cellPadding=0 border=0><BR>
<TR>
<TD>$Captcha[part: field]$</TD>
<TD>$Captcha[width:120; height:40; part:image]$
<TR>
</TABLE>