Использование капчи в расширениях

При разработке расшиения зачастую бывает небходимо вывести какую нибудь форму незарегистрированным пользователям: форма обратной связи, "заказать звонок", вопрос в поддержку и т.п.
Такие формы могут быть заполнены и отправлены на сервер спам-ботами, тем самым заполняя базу данных мусором. Капча - весьма эффективный способ защиты от таких ботов.

Требовать заполнить капчу зарегистрированных пользователей не имеет смысла т.к. боты не могут авторизоваться на сайте и "спамить" во все формы. По этому нужно отображать капчу только в тех формах, которые будут заполняться гостями.

Использовать капчу в Ваших расширениях довольно просто.

Чтобы вывести капчу в какую либо форму:

Добавте такой код в контроллер Вашего расширения:

// Инициализируем шаблонизатор
$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');
	}
}

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям