Архив блога

Категории





Блоги

Использование radCaptcha при создании модулей в проектах DotNetNuke

от Маркус в 31 июля 2012 г. 15:25

При публикации общедоступных интерактивных форм на страницах сайтов, администраторы часто сталкиваются с проблемой ботов форм, которые засоряют спамом базы данных и перегружают веб-сервер по средствам автоматического заполнения этих форм. Для борьбы с этим явлением требуется вставка в форму капчи (captcha), которая успешно помогает препятствовать ботам безконрольно заполненять и отправлять данные на сервер.  Исторически, в DotNetNuke, капча была доступна с самых ранних версий продукта, но она была ограничена в возможностях настроек, включая отсутствие возможности изменения ее внешнего вида. Но это было до момента пока разработчики DotNetNuke не предоставили возможность использовать пакет элементов для построения пользовательского интерфейса от Telerik. В этом пакете есть программный объект RadCaptcha, который несет в себе контрол капчи. Он отвечает всем современным требованиям, но его использование не получило широкое распространение из-за  того, что он не был достаточно задокументирован. В данной публикации я расскажу, как использовать RadCaptcha при написании собственных модулей для проектов DotNetNuke. [marcusBlog-RadCaptcha-2.jpg]

Прежде, чем я углублюсь в процесс механики использования RadCaptcha, хочу немного сказать о том почему я рекомендую использовать RadCaptcha вместо существующего в DotNetNuke стандартного объекта Captcha или иных решений.  Начнем с того, что в RadCaptcha имеется множество настроек вывода капчи, такие как: аудио, регенерация по запросу, которая значительно помогает  восприятию пользователям, особенно с ограниченными возможностями. Кроме этого, RadCaptcha доступна через DotNetNuke API, что для разработчиков дает несомненное удобство его использования без внесений изменений в web.config и так далее.

Реализация способа использования RadCaptcha в модулях на сайтах DotNetNuke довольно проста и состоит из нескольких основных шагов. Для начала следует поместить в заголовок кода следующий тег:

<!--Register TagPrefix="dnn" Assembly="DotNetNuke.Web" Namespace="DotNetNuke.Web.UI.WebControls"-->

В некоторых случаях, чтобы не получить ошибку компиляции, Вы должны будете в проекте добавить ссылку на объект DotNetNuke.Web.dll.

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

<div class="dnnFormItem"><dnn:DNN:DNNCAPTCHA id="ctlCaptcha" ErrorMessage="Введенный код не соответсвует коду, который изображен на картинке. Пожалуйста попробуйте еще раз" runat="server" CaptchaTextBoxLabel="Пожалуйста, введите символы, которые Вы видете на картинке в ниже расположенное поле." EnableRefreshImage="True" CaptchaWidth="300"></dnn:DNN:DNNCAPTCHA></div>

Подробно о наборе свойств и настройке параметров  контрола  RadCaptcha  и внесение изменений в тэг   можно ознакомится в технической документации.

Теперь, после того, как Вы это сделали, можете просто проверить работу контрола ctlCaptcha в действии. Не забудьте использовать свойство IsValid в коде для проверки корректного заполнения формы.

Согласитесь, что сделать это было быстро и просто, но есть кое-что, о чем мы забыли – это управление стилями отображения. По умолчанию стиль отображения выглядит неприглядно. Картинка и поле для ввода секретного кода отображаются где попало.

Чтобы исправить это, внесите CSS скрипт в файл module.css по своему усмотрению. Ниже я приведу основные классы:

.dnnForm .dnnFormItem .RadCaptcha { margin-left:32%; }
.dnnForm .dnnFormItem .RadCaptcha LABEL { width: inherit; float: left; }

Приведенный пример свойств классов теперь будет отображать капчу в следующем виде:

Теперь Вы сможете с легкостью использовать RadCaptcha в своих проектах на DotNetNuke. Желаю удачи

Blogs Parent Separator Блог Маркуса
Модуль
Безопасность
Автор
Маркус

Обо всем по-немногу о DNN.