Безделушка обратной связи копию письма. Как сделать анкету обратной связи для участников события в Google Forms: инструкция, скриншоты, советы. Зачем нужна форма обратной связи

Если вы хотите, чтоб вопрос был обязательным для заполнения, не забывайте переключать соответствующий бегунок в нижней части окна редактирования вопроса - для обязательного вопроса он должен быть переключен вправо и гореть зеленым цветом.

Хитрость вторая: порядок вопросов

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

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

Хотя перетаскивать вопросы при создании формы довольно легко и удобно, не увлекайтесь перетаскиваниями - разобраться потом в таблице с ответами будет сложнее.

Google постоянно вносит разные улучшения в интерфейс своих сервисов, но вот эта особенность гугл форм пока что так ни разу и не менялась.

Чтобы посмотреть ответы, надо перейти на вкладку «Ответы» в самом начале формы:

Когда ваши участники заполнят несколько форм, то в этом экране появятся две опции: «Сводка» и «Отдельный пользователь». Там можно будет быстро пробежать глазами по всем ответам.

Я редко пользуюсь этим экраном, мне удобнее сразу перейти в таблицу, которая организована на манер MS Excel-файла. Для того, чтоб отобразить заполненные анкеты в виде сводной таблицы, нужно нажать на зеленую иконку и выбрать Создать таблицу >> Новая таблица >> Создать. В новой вкладке браузера откроется Google Таблица, названная так же, как и ваша форма, но с припиской в конце: (Ответы).

Эти два файла в гугл драйве будут отображаться как разные файлы, но между ними всегда будет неразрывная связь. Как только новый участник заполнит анкету, данные мгновенно появятся и в таблице.

Шаг 4. Наводим красоту: выбираем шаблон внешнего вида

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

Вы также можете выбрать один из нескольких бесплатных дизайнов. Некоторые из их вполне симпатичные, есть и тематические для разных праздников и типов событий. Чтобы выбрать особый шаблон, нужно кликнуть на иконку в правом нижнем углу палитры, и откроется отдельное окошко с выбором категорий:

Прежде чем отправлять форму участникам, убедитесь, что ваша форма выглядит на пять с плюсом. Откройте ее в отдельном окне и попробуйте заполнить сами. Чтобы открыть форму, нужно вновь пойти в правый верхний угол, нажать на иконку их трех вертикальных точек и выбрать «Открыть форму».

Если всё отображается корректно и вы ничего не забыли, то пора отправлять анкету участникам.

Шаг 5. Публикуем анкету для участников

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

Чтобы встроить форму в страницу вашего сайта или блога, нужно пойти в верхний правый угол и нажать на иконку бумажного самолетика. В открывшемся окошке есть три варианта, как отправить: письмо, ссылка и встроить в веб-страницу. Выбираем третью иконку:

Скопируйте HTML-код, вставьте его в исходный код страницы сайта, и вуаля - .

Второй способ - отправить участникам прямую ссылку на анкету. Выбираем в том же меню иконку с ссылкой, сочиняем текст письма, добавляем ссылку в письмо. Если вы пользуетесь такими сервисами рассылок как MailChimp или ему подобные, то этот способ может быть наиболее удобным.

Если вы все-таки решили отправлять гугл форму на email участникам вашего события прямо из интерфейса Google, не забывайте добавлять там сообщение. Рекомендую поставить галочку «отправить мне копию» и сделать пару тестовых писем, прежде чем посылать их всем. Так вы хотя бы увидите, как выглядело отправленное вами письмо.

Пара слов о разных настройках в Google Формах

Я верю в метод познания интерфейсов «тыкнул - попробовал - понял». Поэтому считаю, что даже если бы мне объяснили, что делает каждая кнопка на панели инструментов, я бы все равно не запомнила.

Но у гугловских форм есть некоторые настройки, до которых редко можно добраться методом тыка, и мне они сильно помогают каждый раз, когда я создаю любого рода анкеты.

Важная настройка формы: сообщение о заполненной анкете для участника

Когда гость вашего события заполнил все вопросы и нажал «отправить», Google покажет ему страничку с сообщением об успешной отправке. По умолчанию у Google стоит бесчеловечное «Ответ записан». Ни один организатор события, который ценит своих гостей и дорожит их лояльностью, не может себе позволить оставить это без изменений!

Поэтому не ленимся и заходим в меню через правый верхний угол, выбираем «Настройки» и находим раздел «Страница подтверждения». В поле «Сообщение для респондентов» пишем что-нибудь личное и уникальное, например так:

Там же есть всякие разные настройки заполнения формы, на которые стоит обратить внимание: разрешение заполнять анкету несколько раз, разрешение на просмотр сводки ответов, индикатор прогресса заполнения (для длинных форм особенно важно) и разные другие.

Важная настройка таблицы: отслеживание ответов

Еще одна полезная галочка - уведомления о том, что пришла заполненная анкета. Если вы эти уведомления не настроите, то Google вас беспокоить вообще не будет, и вы узнаете, сколько человек заполнило анкету только если зайдете в таблицу с ответами. Иногда это жутко неудобно.

Я вот, например, всегда в обязательном порядке эти уведомлялки для себя настраиваю, этот пунктик даже есть в моем .

Настроить такие уведомления можно в интерфейсе таблицы ответов на форму: Инструменты >> Уведомления >> выбираем «Отправка формы» и способ уведомления - раз в день или мгновенно, сразу после того как участник заполнил. Не забываем нажать «Сохранить».

Итого: у нас есть анкета и привязанная к ней таблица с ответами. В них есть еще миллион интересных настроек и лайфхаков, но лучше всего их открывать для себя самостоятельно. Но если вы решили сделать первую в жизни анкету по сбору обратной связи после события, описанных здесь пяти шагов будет более чем достаточно для старта.

Надеюсь, эта небольшая инструкция поможет начинающим организаторам упростить сбор обратной связи и сохранить некоторое количество деревьев, исключив необходимость сбора бумажных анкет!

(Visited 6 040 times, 1 visits today)

Одним их наиболее востребованных элементов сайта была и остается форма обратной связи. Она представляет собой удобный способ установления контакта посетителей с владельцем сайта. Многие веб-мастера устанавливают себе сторонние расширения для организации формы обратной связи, но мало кто знает, что создать ее можно и стандартными средствами Joomla. Это гораздо правильнее, поскольку каждое стороннее расширение требует отдельного обновления и отслеживания уязвимостей. В этой статье я расскажу о том, как создать форму обратной связи, защищенную от спама, с помощью стандартных средств Joomla.

Иногда бывает так, что вы давно уже знакомы с Joomla и вроде бы знаете эту CMS достаточно хорошо, но в один прекрасный день обнаруживаете новую возможность, которая все это время имелась в Joomla, но вы о ней даже не подозревали. Точно также получается и с формой обратной связи – она есть, но найти ее довольно непросто.

Помимо стандартной формы обратной связи советую попробовать мой модуль Wedal Joomla Callback . Он бесплатен и позволяет загружать и отправлять форму обратной связи без перезагрузки страницы.

Создание формы обратной средствами Joomla. Компонент «Контакты».

Скажите честно, сколько раз вы пытались разобраться со стандартными компонентами Joomla, которые доступны сразу после ее установки? Не знаю почему, но ассоциации такие, что это простейшие, базовые вещи, которые вряд ли когда-то понадобятся. На самом деле бывает наоборот.

В Joomla есть стандартный компонент с названием «Контакты». Легко понять, что он позволяет показать на сайте список контактов владельцев сайта, менеджеров и.т.д. Вы скажете: «Ну и зачем разбираться с целым компонентом, если можно просто создать статью, указав в ней необходимые контактные данные?». Во многом вы будете правы. Но, к сожалению, поступив именно так, вы никогда не узнаете, что компонент «Контакты» позволяет создать отдельную форму обратной связи для каждого контактного лица. Уже интереснее?

На сайте сайт вы можете увидеть пример такой формы:

Как видите, все необходимое для связи имеется. Этой формой посетители пользуются достаточно часто. Как ее создать?

Компонент «Контакты». Добавление контакта.

Переходим в «Компоненты» –> «Контакты» и добавляем новый контакт.

Появится следующая форма:

Здесь вы указываете имя контакта, и выбираете пользователя, который будет связан с контактом. Обычно это администратор.

В поле «Дополнительная информация» можете указать какой-то текст, который требуется показать на странице контакта.

Во вкладке «Детали контакта» не заполняем ничего.

Во вкладке «Настройки отображения» скрываем все лишнее:

Во вкладке «Форма обратной связи» показываем форму:

Сохраняем.

Компонент «Контакты». Добавление пункта меню контакта.

После того, как контакт создан, необходимо показать его на сайте. Для этого создаем в меню пункт «Контакты» или «Обратная связь» и выбираем для него тип «Контакты» –> «Контакт»:

После этого в появившейся справа форме выбираем созданный нами контакт:

И сохраняем.

На этом все. Можно смотреть на нашу форму на сайте.

Важно! Обязательно проверьте работоспособность полученной формы обратной связи. Иногда, из-за неправильных настроек отправления писем, почта не отправляется. Это ошибка не формы контактов, а настроек Joomla по работе с почтой (смотрите общие настройки Joomla).

Создание формы обратной средствами Joomla. Защита от спама.

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

Как защитить форму обратной связи от спама? В Joomla 2.5 имеется поддержка наверное самой лучшей капчи(код с картинки) reCAPTCHA. Алгоритм ее активации следующий:

1) Получение ключей. Чтобы получить ключи активации, нужно перейти на страницу http://www.google.com/recaptcha/whyrecaptcha и нажать кнопку «Sign Up Now». Вам будет предложено авторизоваться в аккаунте Google(сервис reCaptcha принадлежит Google). Если такового нет, то придется зарегистрировать. После авторизации вас попросят ввести адрес сайта:

И после этого будут сгенерированы два ключа.

Вся процедура получения ключей и пользования ими бесплатна.

2) Идем в менеджер плагинов сайта и находим там плагин «CAPTCHA - reCAPTCHA».

В его настройках видим поля для ввода ключей:

Вводим ключи, активируем плагин и сохраняем его.

3) Переходим в компонент контактов и открываем настройки:

В опции «Включить CAPTCHA» выбираем «CAPTCHA - reCAPTCHA». Сохраняем. Готово. Теперь капча появится в нашей форме обратной связи.

Кстати , reCAPTCHA может использоваться не только в форме обратной связи, но и при регистрации пользователей (активируется в настройках менеджера пользователей).

На этом всё. Потратив 5 минут, можно создать простую и удобную форму обратной связи для вашего Joomla-сайта , не прибегая к использованию сторонних расширений.

Вконтакте

Одной из наиболее часто встречающихся на практике задач является реализация формы обратной связи. Тобишь написание ее HTML кода, оформление ее на CSS, создание PHP скрипта, который бы обрабатывал полученные от пользователя данные и отправлял их на нашу почту, написание JS скрипта, который бы проверял форму на адекватность вводимых данных, защита нашего детища от спама, чтобы наш почтовый ящик не обвалился от атак ботов.

Все вышеперечисленные моменты будут рассмотрены в нашем обзоре и подробно прокомментированы.

Итак, начинаем создание формы обратной связи:

HTML

В первую очередь мы пишем HTML код, в нем задаются поля, которые будет заполнять пользователь. Они же в дальнейшем будут оформляться. Код формы выглядит следующим образом:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" > Имя: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" > Телефон: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" > E- mail : < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" > Сообщение: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Отправить" />

И визуально она выглядит сейчас следующим образом:

Согласен, пока все некрасиво и ничего не понятно, но мы только начали.

Рассмотрим приведенный выше код подробно:

  • < form method= "post" action= "mail.php" > …


    для того, чтобы создать форму необходимо использовать тег form. Именно он определяет начало и конец формы для интерпретатора кода. У него, как и у любого тега, есть целый набор атрибутов, но обязательных для работы формы всего два, это method (метод отправки запроса на сервер, для форм стандартно используют post) и action (указывает путь к файлу-обработчику формы, именно в этом файле будет содержаться скрипт на PHP, который после будет отправлять введенные пользователем значения нам на почту, в нашем случае мы видим, что это файл называется mail.php и лежит он в том же директории сайта, что и рассматриваемая нами страница).
  • < input maxlength= "30" type= "text" name= "name" />


    Далее у нас следуют инпуты. Это собственно сами поля формы в которые пользователи будут вводить необходимую нам информацию (type="text" говорит о том, что это будет текст). Атрибут maxlength указывает сколько символов может ввести пользователь в данное поле формы. Самый важный атрибут это name – он задает имя конкретного поля. Именно по этим именам в дальнейшем PHP скрипт будет обрабатывать поступающую в него информацию. При желании можно еще задать атрибут placeholder, который выводит внутри поля текст исчезающий при установке курсора внутри нее. Одной из проблем плейсхолдера является то, что он не поддерживается некоторыми старыми браузерами.
  • < label for = "name" > Имя:


    Используется в случае если мы отказались от плейсхолдеров. Обычная подпись поля, атрибут for сообщает к какому конкретно полю относится данная подпись. Значением указывается name интересующего нас поля.
  • < textarea rows= "7" cols= "50" name= "message" >


    Также как и инпут предназначен для введения пользователем информации, только на этот раз поле заточено для длинных сообщений. Rows указывает размер поля в строках, cols в символах. В целом они задают высоту и ширину нашего поля.
  • < input type= "submit" value= "Отправить" />


    О том, что это кнопка для отправки формы нам сообщает type="submit", а value задает текст, который будет внутри этой кнопки.
  • < div class = "right" >


    использованы только для дальнейшего визуального оформления формы.

CSS

Для того, чтобы наша форма обратной связи выглядела презентабельно ее нужно оформить. Для получения следующего результата:

Мы использовали данный код:

form { background: #f4f5f7; padding: 20px; } form . left, form . right { display: inline- block; vertical- align: top; width: 458px; } form . right { padding- left: 20px; } label { display: block; font- size: 18px; text- align: center; margin: 10px 0px 0px 0px; } input, textarea { border: 1px solid #82858D; padding: 10px; font- size: 16px; width: 436px; } textarea { height: 98px; margin- bottom: 32px; } input[ type= "submit" ] { width: 200px; float: right; border: none; background: #595B5F; color: #fff; text- transform: uppercase; }

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

  1. Не стоит писать оформление под каждый тег в форме. Старайтесь строить свои селекторы так, чтобы парой строк кода оформлять все необходимые Вам элементы.
  2. Не используйте для переноса строк и создания отступов лишние теги по типу < br>, < p> и тд, с этими задачами прекрасно справляется CSS со свойством display: block и margin с padding. Больше о том, почему не стоит пользоваться < br> в верстке вообще можете почитать в статье Тэг br, а так ли он нужен? .
  3. Не стоит пользоваться табличной версткой для форм. Это противоречит семантике этого тега, а поисковики любят семантичный код. Для того, чтобы формировать визуальную структуру документа нам достаточно тегов div, и заданных им в CSS свойств display: inline-block (выстраивает блоки в ряд) и vertical-align: top (не дает им разбежаться по экрану), задаем им необходимую высоту и вуаля, ничего лишнего и все расположено так, как нам нужно.

Для желающих экономить свое время на оформлении сайтов могу посоветовать пользоваться CSS фреймворками при создании сайтов, особенно самописных. Мой выбор в этом плане- Twitter Bootstrap . Урок по оформлению форм с его использованием можно посмотреть .

PHP

Ну вот и пришло время сделать нашу форму работоспособной.

Заходим в наш корневой каталог сайта и создаем там файл mail.php, к которому мы ранее указывали путь в атрибуте action тега form.

В конечном итоге его код будет выглядеть следующим образом:

Ваше сообщение успешно отправлено \" javascript: history.back()\" >Вернуться назад

" ; if (! empty ($_POST [ "name" ] ) and ! empty ($_POST [ "phone" ] ) and ! empty ($_POST [ "mail" ] ) and ! empty ($_POST [ "message" ] ) ) { $name = trim (strip_tags ($_POST [ "name" ] ) ) ; $phone = trim (strip_tags ($_POST [ "phone" ] ) ) ; $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ; $message = trim (strip_tags ($_POST [ "message" ] ) ) ; mail (, , "Вам написал: " . $name . "
Его номер: " . $phone . "
Его почта: " . $mail . "
Его сообщение: "
. $message , ) ; echo "Ваше сообщение успешно отправлено!
Вы получите ответ в ближайшее время
$back "
; exit ; } else { echo ; exit ; } ?>

Обсуждение HTML и CSS части этого документа можно пропустить. По своей сути это обычная страница сайта, которую Вы можете оформить по своему желанию и необходимости. Рассмотрим же важнейшую ее часть – PHP скрипт обработки формы:

$back = "

\" javascript: history.back()\" >Вернуться назад

" ;

Этой строкой мы создаем ссылку для возвращения на предыдущую страницу. Поскольку мы заранее не знаем с какой страницы пользователь попадет на эту, то делается это при помощи маленькой JS функции. В дальнейшем мы просто будем обращаться к этой переменной для вывода ее в нужных нам местах.

if (! empty ($_POST [ "name" ] ) and ! empty ($_POST [ "phone" ] ) and ! empty ($_POST [ "mail" ] ) and ! empty ($_POST [ "message" ] ) ) { //внутрення часть обработчика } else { echo "Для отправки сообщения заполните все поля! $back " ; exit ; }

Тут мы прикручиваем проверку формы на наполненность полей. Как вы догадались, в части $_POST["name"] в кавычках мы пишем значение атрибута name наших инпутов.

Если все поля заполнены, то скрипт начнет обрабатывать данные в своей внутренней части, если же хоть одно поле не было заполнено, то на экран пользователя выведется сообщение с требованием заполнить все поля формы echo "Для отправки сообщения заполните все поля! $back" и ссылкой для возврата на предыдущую страницу, которую мы создали самой первой строкой.

Дале вставляем во внутреннюю часть обработчика формы:

$name = trim (strip_tags ($_POST [ "name" ] ) ) ; $phone = trim (strip_tags ($_POST [ "phone" ] ) ) ; $mail = trim (strip_tags ($_POST [ "mail" ] ) ) ; $message = trim (strip_tags ($_POST [ "message" ] ) ) ;

Таким образом мы очистили вводимые пользователем данные от html тегов и лишних пробелов. Это позволяет нам обезопасить себя от получения вредоносного кода в высылаемых нам сообщениях.

Проверки можно и усложнить, но это уже по вашему желанию. Минимальную защиту на серверной стороне мы уже поставили. Дальнейшее мы сделаем на стороне клиента используя JS.

Полностью отказываться от защиты формы на серверной стороне в пользу JS не рекомендую, поскольку хоть и крайне редко, но встречаются уникумы с отключенным в браузере JS.

После чистки тегов добавляем отправку сообщения:

mail ("почта_для_получения_сообщений@gmail.com" , "Письмо с адрес_вашего_сайта" , "Вам написал: " . $name . "
Его номер: " . $phone . "
Его почта: " . $mail . "
Его сообщение: "
. $message , "Content-type:text/html;charset=windows-1251" ) ;

Именно эта строка и занимается формированием и отправкой сообщения к нам. Заполняется она следующим образом:

  1. "почта_для_получения_сообщений@gmail.com" – сюда между кавычек вставляете свою почту
  2. "Письмо с адрес_вашего_сайта" – это тема сообщения, которое будет приходить на почту. Можно написать сюда что угодно.
  3. "Вам написал: ".$name." < br /> Его номер: ".$phone." < br /> Его почта: ".$mail." < br /> Его сообщение: ".$message – формируем сам текст сообщения. $name – вставляем информацию заполненную пользователем через обращение к полям из предыдущего шага, в кавычках описываем что значит это поле, тегом < br /> делаем перенос строки, чтобы сообщение в целом было читабельно.
  4. Content-type:text/html;charset=windows-1251 - в конце идет явное указание типа данных передаваемого в сообщении и его кодировки.

ВАЖНО!

Кодировка указанная в «голове» документа ( < meta http- equiv= "Content-Type" content= "text/html; charset=windows-1251" /> ), кодировка из сообщения Content-type:text/html;charset=windows-1251 и в целом кодировка файла PHP должны совпадать иначе в получаемых на почту сообщениях вместо русских или английских букв будут выводиться «кракозябры».

Многие не указывают кодировку отправляемого сообщения явно, но на некоторых почтовых клиентах из-за этого в дальнейшем могут возникнуть проблемы (на почту приходят нечитабельные письма), потому я рекомендую ее все-же указывать.

Проверка формы на адекватность вводимых данных

Чтобы пользователи по невнимательности не промахивались полями и заполняли все корректно стоит поставить проверку вводимых данных.

Это можно сделать как на PHP на стороне сервера, так и на JS на стороне клиента. Я использую второй вариант, поскольку так человек сразу может узнать что он сделал не верно и исправить ошибку не делая дополнительных переходов по страницам.

Код скрипта вставляем в том же файле, где у нас располагается HTML часть формы. Для нашего случая он будет выглядеть так:

< script> function checkForm(form) { var name = form. name. value; var n = name. match(/ ^[ A- Za- zА- Яа- я ] * [ A- Za- zА- Яа- я ] + $/ ) ; if (! n) { alert("Имя введено неверно, пожалуйста исправьте ошибку" ) ; return false ; } var phone = form. phone. value; var p = phone. match(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ) ; if (! p) { alert("Телефон введен неверно" ) ; return false ; } var mail = form. mail . value; var m = mail . match(/ ^[ A- Za- z0- 9 ] [ A- Za- z0- 9 \. _- ] * [ A- Za- z0- 9 _] *@ ([ A- Za- z0- 9 ] + ([ A- Za- z0- 9 - ] * [ A- Za- z0- 9 ] + ) * \. ) + [ A- Za- z] + $/ ) ; if (! m) { alert("E-mail введен неверно, пожалуйста исправьте ошибку" ) ; return false ; } return true ; }

Ну а теперь обычный разбор:

Для того, чтобы при нажатии на кнопку отправки формы, у нас происходила ее проверка вешаем запуск нашего скрипта на тег form:

< form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

Теперь по пунктам забираем состав проверки:


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

Одной из распространенных задач для веб-мастера, является создание почтовых форм или форм обратной связи для оправки писем (сообщений) с сайта. В Joomla это можно реализовать несколькими способами, в том числе и стандартно, с помощью компонента «Контакты». Но в этой статье я расскажу о том, как можно создать формы для отправки сообщений, формы обратной связи и о том, как их вставить в любое место сайта с помощью стороннего компонента. Этот компонент называется aiContactSafe. Он абсолютно бесплатен, но вы можете помочь развитию такого полезного проекта, пожертвовав небольшую сумму. Скачать его можно через JED или с сайта разработчика , предварительно зарегистрировавшись. Или можно скачать с сайта . На момент написания статьи актуальной была стабильная версия aiContactSafe 2.0.21с, совместимая как с Joomla 1.5, так и с Joomla 2.5.

В состав компонента форм обратной связи aiContactSafe входят:

  1. Модуль Mod_aiContactSafe, который выводит форму обратной связи в любой позиции шаблона сайта.
  2. Плагин Plg_aiContactSafeForm, который нужен для размещения формы обратной связи прямо в статье.
  3. Плагин Plg_aiContactSafeLink, нужный для размещения ссылки на форму обратной связи в статье.

Компонент aiContactSafe обладает следующими возможностями:

  • Имеет свой встроенный защитный код (CAPTCHA). Встроенная CAPTCHA может задавать кодовые слова для различных языков, выводить вместо слов случайный набор символов заданной длины. Защитный код легко интегрируется в дизайн сайта благодаря настройкам цвета символов и цвета фона.
  • Поддержка профилей. С помощью профилей, на сайте можно создать различные виды форм, с различным набором пользовательских полей. Например, в одном профиле можно настроить форму обратной связи для отправки резюме, а в другом профиле форму заявки на подбор персонала, а в третьем профиле настроить форму для отправки сообщения администратору сайта и т. д.
  • Неограниченное количество пользовательских полей различного типа: текстовое поле, флажок, переключатель, список, выпадающий список, разделитель, вложение файла, контакт Joomla, адрес электронной почты, скрытое поле, многострочное текстовое поле.
  • Добавление префиксов (заголовков) и суффиксов полей.
  • Перенаправление на указанную страницу в случае успешной отправки сообщения (письма).
  • Добавление любого количества вложений, работающих как с AJAX, так и без него.
  • Поддержка SEF. Можно использовать как родной SEF Joomla, так и ARTIO JoomSEF или sh404SEF.
  • Поддержка многоязычности.
  • Языковые файлы для более чем двадцати языков.
  • Указание дополнительной (контактной) информации с помощью редактора WYSIWYG.
  • Подробные инструкции по настройке и администрированию (на английском).
  • Блокировка пользователя по IP адресу.
  • Блокировка сообщений по определенным словам (стоп-словам).
  • Автоматическая блокировка IP адресов, которая срабатывает через заданное время, если посетитель сайта с определенного IP адреса отправляет сообщения содержащие стоп-слова.

Итак, скачиваем компонент и производим стандартную установку, используя «Менеджер расширений». После успешной установки переходим в меню «Компоненты» и выбираем пункт «Форма обратной связи». По умолчанию компонент будет открыт на вкладке «Сообщения». Сообщений у нас пока нет, поэтому займёмся настройкой. Перейдем на вкладку «Статусы сообщения» и переименуем их. У компонента есть небольшие проблемы с локализацией, поэтому для удобства приходится их исправлять вручную.

Кликаем по названию статуса и переименовываем: New в Новое, Read в Прочитанное, Replied в Отправленное, Archived в Архивное.
Переходим на вкладку «Панель управления». Здесь находятся общие настройки компонента. Большую часть настроек можно оставить со значениями по умолчанию. Стоит обратить внимание на блок антиспам-настроек.

Сейчас мы не будем настраивать этот блок – каждый настраивает его сам, согласно своим потребностям. Рассмотрим в вкратце эти настройки.
Активировать контроль SPAM"а. Включает/выключает контроль спама по стоп-словам. Если в сообщении будут найдены стоп-слова, то оно не будет отправлено. Работает в паре со следующей опцией.
Блокировать письма содержащие. В это поле вписываются стоп-слова, через «;».
Записывать заблокированные сообщения. Включает запись сообщения, помеченного как СПАМ в БД. Оставляем включенным – для контроля.
Активировать запрет по IP адресу. Если активировать эту опцию, то посетители с отмеченных, ниже IP адресов не смогут получить доступ к форме обратной связи (контактной форме).
IP адреса для блокирования. Это поле содержит список блокируемых ip адресов. Посетители, пришедшие на сайт с одного из указанных адресов, не смогут получить доступ к контактной форме. Для блокировки больших сегментов сети можно использовать символы подстановки, например «*». Если записать так: 123.*.*.*, то будут запрещены все IP адреса, начинающиеся с 123.
Перенаправлять заблокированные IP адреса на. В это поле можно ввести адрес страницы, на которую будет перенаправлен посетитель сайта, если он пришёл с заблокированного IP адреса. Если ничего не указать, то перенаправление будет выполнено на главную страницу сайта.
Запрещать IP-адреса, которые отправляют сообщения с заблокированными словами. Включает/выключает автоматическую блокировку IP адресов посетители, с которых отправляют сообщения со стоп-словами. Блокировка будет срабатывать, если будут выполнены условия двух, нижеследующих опций.
Максимальное количество заблокированных сообщений перед запретом IP. Предельное количество сообщений со стоп-словами, после которого IP адрес будет заблокирован.
Минуты для подсчёта заблокированных сообщений. Период времени, в который осуществляется подсчёт сообщений со стоп-словами.
Отправлять email с сообщением о запрете IP. Адрес электронной почты, на который отправляется сообщение о срабатывании автоматической блокировки IP адреса.
Кроме блока антиспам-настроек следует обратить внимание на настройки, которые находятся в нижней части окна.

Следующие четыре опции относятся к настройке вложений, отправляемых с письмом.
Максимальный размер вложения (в байтах). Если в форме обратной связи будет поле для вложения файла, то полезно ограничить его максимальный размер. По умолчанию 5 Мб.
Разрешённые типы вложений. В этом поле через запятую можно указать разрешенные типы вложений.
Присоединить к сообщению. Определяет отправку вложения. Можно присоединить вложение к сообщению, а можно с сообщением отправить ссылку на файл, который при отправке будет сохранён на сервере.
Удалить файлы после отправки сообщения. Если вложение отправляется прикреплённым к сообщению, то файл вложения можно удалять с сервера. Например, для экономии дискового пространства.
Проверить языковые файлы. Нажатие этой кнопки запускает процедуру проверки языковых файлов для соответствующего языка.
Следующие три опции доступны, если установлены соответствующие им компоненты: ARTIO JoomSEF, Joom!Fish и FaLang. Если на сайте установлены данные компоненты, то имеет смысл включить их интеграцию с aiContactSafe.
За этими настройками следуют три кнопки включения вышеописанных составляющих компонента. По умолчанию они выключены. Кнопки сопровождает устрашающее предупреждение. Нам с вами нужно знать, как это работает, поэтому включаем все три.
Далее следует настройка прав доступа к компоненту. Здесь можно установить группу пользователей сайта, которая может читать сообщения с лицевой части сайта. По умолчанию «Супер-пользователи». Так и оставим.
Название кнопки «Удалить таблицы из базы данных» говорит само за себя. Она может понадобиться в исключительных случаях, когда нужно полностью удалить или полностью переустановить компонент. Нажатие на эту кнопку удалит в базе данных сайта все таблицы, созданные компонентом aiContactSafe. Без резервной копии их восстановить не удастся!
Следующую часть настроек рассмотрим на простом практическом примере. Допустим, что на сайте кадрового агентства нужно разместить две формы обратной связи: первая – общая, для контактов по общим вопросам, а вторая – для отправки резюме. Для первой формы будет создана страница и пункт меню «Контакты», а вторая форма будет размещаться на страницах с вакансиями. В первой форме обратной связи нам нужна следующая информация: имя отправителя, адрес электронной почты, тема сообщения, текст сообщения и возможность отправки копии сообщения отправителю. Во второй контактной форме нам понадобятся следующие поля: имя отправителя, адрес электронной почты, название вакансии и возможность прикрепления файла с резюме.
В компоненте aiContactSafe переходим на вкладку «Поля».

Как видим, в компоненте уже есть несколько полей. Нам нужно немного отредактировать существующие и добавить необходимые поля. Кликом мыши по названию первого поля, откроем его для редактирования и рассмотрим настройку поля подробно.

Название . Это внутренняя переменная компонента. Всегда пишется латинскими буквами без пробелов. Оставляем как есть.

Field label (метка поля) . Это заголовок в поля в форме обратной связи. Меняем на Отправитель.

Label parameters (параметры метки) . Здесь можно задать дополнительные стили, как если бы мы задали стили в тегах < style >. Только кавычки должны быть одинарными. Например, мы хотим, чтобы при наведении указателя мыши всплывала подсказка. Тогда в этом поле можно написать: title="Ваше имя, например Сергеев Николай Николаевич".

Field label in message ( метка поля в письме ) . Это заголовок в письме получателя. Мы ведь получим письмо! Меняем на Отправитель.

Label in message parameters (параметры метки поля в письме) . То же, что и Label parameters, только для письма.

Метка после поля . Если надо, чтобы заголовок был не перед полем ввода, а после.

Field type (тип поля) . Тип поля. Важный параметр. Можно выбрать один из семнадцати типов. Нам нужна текстовая строка, поэтому ничего не трогаем.

Отправить сообщение . Для текстовых полей этот параметр недоступен. Он актуален для типов полей, содержащих адрес электронной почты.

Field values (значения поля) . Так же недоступен для текстовых полей. Нужен для полей списков, выпадающих списков, групп флажков и переключателей.

Лимит поля . Параметр, ограничивающий количество символов в текстовом поле. Больше символов, чем указано в этом параметре ввести нельзя. Ограничим это поле 60 (шестьюдесятью) символами.

Field parameters (параметры поля) . Такая же настройка, что и для метки поля. Но относящееся уже к самому полю ввода. По умолчанию уже содержит значение. Добавим к нему свои пять копеек, чтобы получилось class="textbox" title="Ваше имя, например Сергеев Николай Николаевич". Пусть тоже будет всплывающая подсказка.

Автозаполнение . В нашем случае Нет.

Значение по умолчанию . Можно сразу задать значение поля по умолчанию, но нам это не надо.

Префикс поля . Информация, которая будет добавлена прямо перед полем ввода.

Суффикс поля . Информация, которая будет добавлена прямо после поля ввода.

Field required (необходимое поле) . Поле, обязательное для заполнения.

Включать в тело письма . Отображать ли значение поля в письме получателя.

Сохраняем настройки. Теперь вы можете самостоятельно поправить текстовые поля « Phone » и « Subject ». Присвойте метки Телефон и Тема соответственно.

Поле « Email », практически ничем не отличается от текстового поля. Различие состоит в том, что для этого типа полей предусмотрена проверка на ввод корректного адреса электронной почты. Поправим только метки поля – пусть будут Эл. почта.

Для поля « Message » зададим значение для меток Сообщение. Можем установить лимит в 1000 символов (на своё усмотрение). Тип этого поля – «Расширенное текстовое поле», а значит и настройки идентичны.

В настройках поля « Send a copy of this message to yourself » так же поменяем метки на Отправить копию сообщения себе. Это поле представляет собой флажок (галочку). Если опция установлена, отправитель получит копию своего сообщения на адрес электронной почты, который он указал выше.

Всё, существующие поля поправили! Теперь создадим два нужных нам поля: текстовое поле «Вакансия» и поле для прикрепления файла резюме к сообщению. Для этого всё в той же вкладке «Поле» кликаем на кнопке «Добавить». В открывшемся окне задаём значение поля Название: aics_vacancy. По умолчанию тип создаваемого поля «Текстовая строка» - это то, что нам нужно для создания поля «Вакансия». С текстовыми полями вы уже умеете работать, так что настроите сами. На всякий случай ниже привожу скрин своих настроек.

Теперь создадим поле для прикрепления файла к сообщению. Нет ничего проще! Нажимаем кнопку «Добавить», название поля - aics_file, метка поля - Прикрепить файл с резюме до 5 Мб(zip,rar,doc), метка поля в письме - Прикрепить файл, тип поля – Файл.
Теперь, когда есть все необходимые поля можно настроить профили. В компоненте aiContactSafe переходим на вкладку «Профайлы». Профайлы или профили – это наборы настроек для определённой формы обратной связи. Мы видим, что здесь о нас тоже позаботились и сделали два профиля. Кликаем на названии первого профиля (его ID - 1) и открываем его для редактирования. Настроек довольно много, но все они интуитивно понятны. Делаем следующее:

  • Меняем название профиля, чтобы было понятнее
  • Включаем опцию «Использовать AJAX для отправки формы»
  • Если нужно, то настраиваем отображение CAPTCHA

Здесь стоит обратить внимание вот на что. Если мы меняем максимальную длину слова для CAPTCHA, то нужно не забывать о «Ширине CAPTCHA». Чтобы не получилось так, что при заданной ширине отображаются не все символы. Другими словами, чтобы они поместились.

  • Если хотим, чтобы сообщения приходили на адрес электронной почты отличный от указанного в общих настройках сайта , то заполняем поле Электронный адрес . Следует помнить, что в это поле вводится адрес электронной почты, который будет работать с вышеуказанными настройками. Т. е. если в это поле ввести адрес ящика из другого домена, например из yandex.ru, то нужно будет соответствующим образом редактировать параметры отправки почты в общих настройках сайта.
  • Заполняем префикс темы письма.
  • Если нужно, меняем формат письма с HTML на «Простой текст».
  • Изменяем значение поля Обозначить необходимые поля символом (ами) .
  • Изменяем Уведомление об обязательных полях.
  • Пишем своё Сообщение благодарности.

  • Сортируем и отмечаем нужные для этого профиля поля.

Кликаем на кнопке «Применить» и поднимаемся в верхнюю часть окна. Здесь нас интересуют кнопки: Edit Contact, Edit CSS, и Edit Email. Этими кнопками можно воспользоваться не только в этом окне. Они присутствуют в панели управления вкладки «Профайлы». Требуется только выделить нужный профиль и нажать соответствующую кнопку.

Итак, нажимаем кнопку Edit Contact. В открывшемся окне мы можем отредактировать контактную информацию формы обратной связи или вообще убрать её. Информация корректируется редактором по умолчанию, установленным для текущего пользователя. Заполняем так, как нам нужно.

Сохраняем изменения. Теперь если нужно, то изменяем оформление (стили). Для этого выделяем профиль «Common» и нажимаем кнопку «Edit CSS». Подробно настройки CSS описывать не буду - во-первых, у каждого они свои, а во-вторых, это выходит за рамки статьи. Коснусь лишь вскользь. Каждый файл CSS для профиля уже содержит примеры того, как можно изменить стиль элемента формы обратной связи. Для существующих полей записи уже сделаны. Для новых элементов, если требуется, нужно скопировать строку для соответствующего типа, изменить идентификатор «field_name» на имя нового поля и добавить свойства.

После настроек CSS можно настроить вид приходящего письма. Для этого надо выделить профиль и нажать кнопку Edit Email. Редактирование вида приходящего сообщения – это задача не для новичков. На первых порах, оставляйте как есть - главное, что в нём содержится требуемая информация.
Один профиль настроили. Теперь мы можем поместить контактную информацию и форму обратной связи на сайте. Для этого в нужном меню добавляем пункт «Контакты», а тип пункта меню назначаем «Contact Form».

Заголовок меню задаём, например Контакты. В обязательных параметрах уже выбран профиль «Common» т. к. он является профилем по умолчанию.

Сохраняем изменения и переходим на фронтальную часть сайта. Кликаем по пункту меню «Контакты» и видим, что у нас получилось.

Заполняем поля и отправляем сообщение. Если всё настроено правильно, то электронное письмо появится во вкладке «Сообщения».
Теперь настроим второй профиль (Module form) и рассмотрим работу модуля и плагинов aiContactSafe. А именно, как вставить модуль с формой обратной связи, как вставить форму обратной связи в статью и как сделать ссылку на такую форму.
Основные настройки второго профиля:

  • Название профайла: resume
  • Поле для использования в качестве темы: aics_vacancy Вакансия
  • Поле для использования в качестве послать отправителю: нет

  • Выбираем нужные нам поля и сортируем их

Если требуется, меняем «Префикс темы электронного письма» и переводим уведомления. Остальные настройки редактируем по своему усмотрению. Сохраняем. Удаляем всю контактную информацию для этого профиля.

Как вывести формы обратной связи модулем

В настройках панели управления aiContactSafe мы включили модуль Mod_aiContactSafe. Теперь с помощью этого модуля вставим форму для отправки резюме в произвольную позицию шаблона. Для этого переходим в «Менеджер модулей», находим там модуль «aiContactSafe module», открываем его и соответствующим образом редактируем.

Главное, на что нужно обратить внимание при редактировании модуля – это правильно выбранный профиль. В поле «Profile"s CSS» можно выбрать использовать ли CSS компонента или шаблона сайта. А в поле «Fields values» для полей формы обратной связи можно ввести предустановленные значения, например "aics_vacancy=бухгалтер".

Не так давно я столкнулся с действующим методом, который позволяет злоумышленнику отправлять спам от имени вашего сайта, используя форму обратной связи Joomla (форму контакта). Эта возможность не является уязвимостью, и вряд ли будет исправлена. В этой статье я расскажу о том, как такое стало возможно, и что нужно делать, чтобы защитить свой сайт.

Стандартная форма обратной связи Joomla

В Joomla есть довольно мощный и гибкий компонент, который называется «Контакты ». Это стандартный компонент Joomla. Он есть на каждом сайте, т.к. устанавливается вместе с CMS. Данный компонент позволяет создавать и выводить на сайт категории контактов, контакты, формы обратной связи, позволяющие связаться с тем или иным контактом. Контакт – это, условно, пользователь – человек с сайта.

Когда-то я писал статью о том, как можно создать на сайте форму обратной связи стандартными средствами Joomla . Данная инструкция актуальна и сейчас. Она позволяет создать вполне себе годную форму обратной связи без установки сторонних расширений. Отправка спама возможна, когда используется именно эта форма, а также, при одновременном стечении некоторых обстоятельств, о которых пойдет речь ниже.

Отправка спама от имени сайта с использованием формы обратной связи Joomla

Вы удивитесь, насколько прост обнаруженный способ отправки спама от имени сайта. Чтобы он был возможен, форма обратной связи должна выглядеть примерно так:

Т.е. должны выполняться два условия:

  1. Форма не защищена от спам-ботов (не подключена reCaptcha или какой-либо другой способ защиты формы)
  2. В настойках контакта активирована опция «Отправлять отправителю копию письма». Благодаря ей в контактной форме появляется соответствующий чекбокс (см. рисунок выше).

Если хотя бы одно из этих условий не выполняется, проблем не будет. Если же выполняются оба условия, то, как говориться, следите за руками:

  1. Спам-бот находит контактную форму. Защиты от спама нет – можно использовать.
  2. Спам-бот определяет, что сайт на Joomla, и что используется стандартная форма контактов. Удивительно, но есть боты, которые прекрасно умеют это делать.
  3. Спам-бот видит наличие чекбокса отправки копии письма отправителю.
  4. Спам-бот подставляет в поле Email адрес из собственной базы спам-рассылки, поле сообщения заполняет спамом. Как заполнены остальные поля неважно.
  5. Спам-бот отправляет форму и повторяет процесс многократно, подставляя все новые и новые адреса из собственной базы в поле Email.

Что происходит в результате? Joomla думает, что форму заполнил человек, который указал свой реальный адрес и хочет связаться с контактом с сайта. Поскольку галочка отправки копии письма установлена, то письма от сайта получают двое: человек, чей адрес привязан к контакту, и человек, чей адрес введен в поле Email.

Таким образом, подставляя в поле Email разные адреса, можно отправить тысячи сообщений от имени вашего сайта. Да, возможно контакт увидит это, быстро поймет, в чем дело, и прикроет лазейку, но очень велика вероятность, что этого не произойдет.

Последствия от такой атаки для сайта и бизнеса могут быть крайне неприятными, особенно когда чтобы раскрутить сайт уже вложено много денег. Если с адреса вашего домена рассылается спам, думаю не нужно объяснять, какой будет реакция его получателей.

Как защититься от этой уязвимости?

Как защититься от этой уязвимости? Элементарно. Сделайте так, чтобы одно из условий, описанных выше, не выполнялось, а именно.