При разработке расшиения зачастую бывает небходимо вывести какую нибудь форму незарегистрированным пользователям: форма обратной связи, "заказать звонок", вопрос в поддержку и т.п.
Такие формы могут быть заполнены и отправлены на сервер спам-ботами, тем самым заполняя базу данных мусором. Капча - весьма эффективный способ защиты от таких ботов.
Требовать заполнить капчу зарегистрированных пользователей не имеет смысла т.к. боты не могут авторизоваться на сайте и "спамить" во все формы. По этому нужно отображать капчу только в тех формах, которые будут заполняться гостями.
Использовать капчу в Ваших расширениях довольно просто.
Чтобы вывести капчу в какую либо форму:
Добавте такой код в контроллер Вашего расширения:
// Инициализируем шаблонизатор
$t = new XTemplate($pathToTemlateFile);
// ... код Вашего расширения ...
// Проверяем что пользователь не авторизован и на сайте установлена хотя бы одна капча:
if (Cot::$usr['id'] === 0 && !empty($cot_captcha)) {
// Вывод капчи в шаблон
$t->assign(cot_generateCaptchaTags(null, 'rverify', 'FEEDBACK_FORM_'));
}
В шаблон добавляем теги для вывода капчи:
<!-- IF {FEEDBACK_FORM_VERIFY_IMG} -->
<div>
{FEEDBACK_FORM_VERIFY_IMG} {FEEDBACK_FORM_VERIFY_INPUT}
</div>
<!-- ENDIF -->
И наконец, при обработке данных отправленных пользователем, нужно проверить правильно ли заполнена капча:
if (Cot::$usr['id'] === 0 && !empty($cot_captcha)) {
$rverify = cot_import('rverify', 'P', 'TXT');
if (!cot_captcha_validate($rverify)) {
// Капча заполнена не правильно
cot_error('captcha_verification_failed', 'rverify');
}
}