При разработке расшиения зачастую бывает небходимо вывести какую нибудь форму незарегистрированным пользователям: форма обратной связи, "заказать звонок", вопрос в поддержку и т.п.
Такие формы могут быть заполнены и отправлены на сервер спам-ботами, тем самым заполняя базу данных мусором. Капча - весьма эффективный способ защиты от таких ботов.
Требовать заполнить капчу зарегистрированных пользователей не имеет смысла т.к. боты не могут авторизоваться на сайте и "спамить" во все формы. По этому нужно отображать капчу только в тех формах, которые будут заполняться гостями.
Использовать капчу в Ваших расширениях довольно просто.
Чтобы вывести капчу в какую либо форму:
Добавте такой код в контроллер Вашего расширения:
// Инициализируем шаблонизатор $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'); } }