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

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

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

Инструкции: введите следующий текст в поле для электронного письма (можете редактировать его и адаптировать к своей ситуации, чтобы было понятно, что его автор – вы). Разошлите его пяти – тридцати (чем больше, тем лучше) знакомым, которые знают вас достаточно хорошо, чтобы дать честную оценку вашим сильным и слабым сторонам. Это могут быть ваши друзья, родственники, коллеги, наставники, учителя, бывшие работодатели или менеджеры, клиенты и прочие важные и близкие для вас люди. А если вы достаточно смелы, то и люди, важные или близкие для вас в прошлом. (Я серьезно.)

Важно: не забудьте рассылать письма как «скрытые копии», чтобы получатели не могли видеть остальных адресатов. (А лучше вообще скопировать и вставить письмо и рассылать их потом каждому человеку отдельно.)

Поле «Тема»: Это очень важно… или Буду счастлив услышать ваше мнение…

Текст электронного письма:

Дорогие друзья, родные и коллеги!

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

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

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

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

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

Электронное письмо, которое изменит вашу жизнь: Мысли в заключение

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

Приветствую моих читателей, набрался опыта и расскажу Вам о принципах работы формы обратной связи php. Покажу на наглядных примерах, чтобы вы понимали как все устроено и как происходит взаимодействие между самой формой ввода (ее полями input) и файлом-обработчиком, написанный на языке php. К тому же бесплатно сможете скачать исходники вместе с .

Конечно здорово будет, если вы хоть немного разбираетесь в HTML / CSS т.к. Вам придется уже по аналогии перетягивать код на свою страницу. PHP язык затрагивать не будем, все необходимые правки, которые нужно будет сделать под себя я покажу.

UPDATE :По откликам читателей, я понял, что нужно что-то более красивое и функциональное, встречайте , ознакомьтесь и посмотрите. Сами выбирайте какая больше понравится)

UPDATE2 : Version 3.0 Адаптивный Лендинг + форма ajax с передачей UTM-меток , ознакомьтесь и посмотрите. Вам понравится

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

Форма обратной связи php — структура

Разбор самой формы обратной связи будем изучать на примере посадочной страницы (Landing Page), кстати есть отдельная статья по . Посмотреть как это работает в действии можете по кнопкам расположенным ниже, прикладываю исходники этого одностраничника и главного файла обработчика-php (этот файл и будет обрабатывать и отправлять письмо на email)

После того как скачаете исходники и распакуете архив, вы увидите следующую структуру по файлам:

  • image — все изображения, которые используются для самого Landing Page, кнопки и т.д.
  • js — javascript скрипты, которые обеспечивают например всплывающее модальное окно на странице и другие визуальные эффекты
  • index.html — индексный файл нашего одностраничника
  • index1.php — файл обработчик, в который передаются значения из формы, далее формируется письмо из полученных переменных и отправляется на указанный email адрес. Так же index1.php случит в роли промежуточной страницы уведомления об успешной отправке данных с автоматическим перенаправлением обратно на index.html (т.е. наш одностраничник)

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

Взгляните на схему работы взаимодействия всех элементов (страница, форма, обработчик)

Исходный код вызова формы и обработчика

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Заказать обратный звонок Заказажите обратный звонок

Заказать обратный звонок Заказажите обратный звонок

Ниже полный исходный код обработчика index1.php, для того чтобы настроить отправку на свой почтовый ящик, поменяйте «[email protected]» на свой, остальное в принципе можно оставить без изменений

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 С вами свяжутся

С вами свяжутся body { background: #22BFF7 url(img/zakaz.jpg) top -70% center no-repeat; } setTimeout("location.replace("/index.html")", 3000); /*Изменить текущий адрес страницы через 3 секунды (3000 миллисекунд)*/

Проверка работоспособности формы

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

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


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

Одной из наиболее часто встречающихся на практике задач является реализация формы обратной связи. Тобишь написание ее 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 я не вижу смысла, обращу Ваше внимание лишь на ключевые моменты:

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

    PHP

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

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

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

    Ваше сообщение успешно отправлено

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

    $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" ) ;

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

  • "почта_для_получения_сообщений@gmail.com" – сюда между кавычек вставляете свою почту
  • "Письмо с адрес_вашего_сайта" – это тема сообщения, которое будет приходить на почту. Можно написать сюда что угодно.
  • "Вам написал: ".$name." < br /> Его номер: ".$phone." < br /> Его почта: ".$mail." < br /> Его сообщение: ".$message – формируем сам текст сообщения. $name – вставляем информацию заполненную пользователем через обращение к полям из предыдущего шага, в кавычках описываем что значит это поле, тегом < br /> делаем перенос строки, чтобы сообщение в целом было читабельно.
  • 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)" >

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


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

    Всем привет! Меня зовут Андрей Тян, я - директор по развитию B2BFamily. Я решил написать вам этот небольшой очерк, потому что понял следующее: раскрыв скрытые выгоды пользования нашим сервисом, могу действительно изменить ваше понимание продаж и сам процесс продажи в лучшую сторону. А поговорим мы сегодня про обратную связь в деловой переписке. Уверен, что время, которое вы потратите на прочтение, не будет потрачено зря.

    Андрей Тян, Директор по развитию B2B Family

    Ох уж эти безэмоциональные серые емейлы!

    Начну с вопроса: как вы понимаете реакцию клиента на предложение по телефону или на встрече? Верно, эмоции! Невербальное общение выдает всё. Вы обращаете внимание на жесты, мимику, манеры. А как можно узнать реакцию в деловой переписке? Да никак! Чаще всего это просто шаблонные письма с эмоциями Стивена Сигала.

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

    Выстроить эффективный диалог с клиентом после переписки - What?

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

    Представьте теперь встречу, переговоры и клиента с эмоциями Стивен Сигала! Комфортно? Классные переговоры о сотрудничестве? А вот если клиент вас слушает, задаёт вопросы, возражает – вот это как раз основа для того, что бы начать реально продавать, выявлять потребности, уточнять детали, презентовать ваш продукт, исходя из потребностей клиента - то, что называется настоящей продажей. Но как же наладить эту гармоничную цепочку коммуникации с клиентом? Как перенести все это с живого общения в деловую переписку?

    Выяснить, как клиент отреагировал на ваше предложение на самом деле!


    Такими вы будете видеть эмоции клиента в переписке, если будете знать:

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

    А если уж клиент вопрос задал прямо во время просмотра документа - берите в оборот такого клиента сразу же! Помните, важно связаться с клиентом, пока он "горячий" . Об этом мы уже дискутировали в нашей статье "Зачем звонить сразу после просмотра ком. предложения?"

    Шанс на живую обратную связь в деловой переписке есть!

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

    Такой пример: при первом контакте выяснили, что главное для клиента "цена-качество". Он сразу же сообщил, что будет сравнивать с конкурентами, интересовался скидками и тд. Затем, в статистике просмотра видим, что 20% от общего времени просмотра клиент провел на слайде с ценой и упустил раздел "Почему стоит выбрать нас". Значит, в следующем письме или звонке делаем упор на преимущества, защищаем свою цену ценностями или даже даем скидку.

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

    Знайте своего клиента - подведите его "за руку" к нужному решению!

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

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

    Вот и все, что я хотел Вам сказать.

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

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

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

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

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

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

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

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

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

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

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

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

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

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