При публикации общедоступных интерактивных форм на страницах сайтов, администраторы часто сталкиваются с проблемой ботов форм, которые засоряют спамом базы данных и перегружают веб-сервер по средствам автоматического заполнения этих форм. Для борьбы с этим явлением требуется вставка в форму капчи (captcha), которая успешно помогает препятствовать ботам безконрольно заполненять и отправлять данные на сервер. Исторически, в DotNetNuke, капча была доступна с самых ранних версий продукта, но она была ограничена в возможностях настроек, включая отсутствие возможности изменения ее внешнего вида. Но это было до момента пока разработчики DotNetNuke не предоставили возможность использовать пакет элементов для построения пользовательского интерфейса от Telerik. В этом пакете есть программный объект RadCaptcha, который несет в себе контрол капчи. Он отвечает всем современным требованиям, но его использование не получило широкое распространение из-за того, что он не был достаточно задокументирован. В данной публикации я расскажу, как использовать RadCaptcha при написании собственных модулей для проектов DotNetNuke. [marcusBlog-RadCaptcha-2.jpg]
Прежде, чем я углублюсь в процесс механики использования RadCaptcha, хочу немного сказать о том почему я рекомендую использовать RadCaptcha вместо существующего в DotNetNuke стандартного объекта Captcha или иных решений. Начнем с того, что в RadCaptcha имеется множество настроек вывода капчи, такие как: аудио, регенерация по запросу, которая значительно помогает восприятию пользователям, особенно с ограниченными возможностями. Кроме этого, RadCaptcha доступна через DotNetNuke API, что для разработчиков дает несомненное удобство его использования без внесений изменений в web.config и так далее.
Реализация способа использования RadCaptcha в модулях на сайтах DotNetNuke довольно проста и состоит из нескольких основных шагов. Для начала следует поместить в заголовок кода следующий тег:
В некоторых случаях, чтобы не получить ошибку компиляции, Вы должны будете в проекте добавить ссылку на объект 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. Желаю удачи