Как отправить сообщение с форм. Веб-дизайн и поисковая оптимизация

18.05.2019

Привет, Друзья! Хочу представить вашему вниманию универсальный скрипт отправки данных из форм на email . Скрипт идеально подойдет для сайтов типа Landing Page , сайтов визиток и т.д. Наш скрипт Формы обратной связи выделяется среди массы остальных скриптов в интернете тем, что имеет возможность подключения неограниченного количества форм с разными полями на одной странице и способен отправлять письма нескольким получателям .

Итак. Давайте приступим. Начнем пожалуй с возможностей скрипта.

  • Подключение неограниченного количества форм на одной странице.
  • Проверка правильности заполнения полей.
  • Настройка уведомлений.
  • Возможность использования писем для каждой формы.
  • Тип письма - (если используются html теги)
  • Отправка на неограниченное количество адресов.
  • Индивидуальная настройка каждой формы.
  • Скрипт работает на , без перезагрузки страницы.
  • Защита от спам ботов.
  • Первоначальная настройка.
    Скрипт работает на основе библиотеки , поэтому первое что нам необходимо сделать это подключить ее. Для этого рекомендую воспользоваться Google Hosted Libraries.

    О остальных файлах давайте подробнее:

    feedback.js - основной файл скрипта, отвечает за AJAX отправку формы .
    jquery.arcticmodal.js,
    jquery.arcticmodal. - обеспечивают возможность вывода форм в модальном окне.
    jquery.jgrowl.js,
    jquery.jgrowl.css - позволяют выводить уведомления на странице (блоки в верхнем углу страницы).

    HTML и обязательные атрибуты.
    Обязательным атрибутом для всех элементов формы является атрибут name="" - необходим для последующей настройки формы.
    Для кнопки (type=«button») обязательно нужно указать class=«feedback» . Так же хочу обратить ваше внимание на то, что в качестве кнопки может выступать любой html тег с классом «feedback».Вызов формы в модальном окнеДля вызова формы в модальном окне сперва нужно определить действие по нажатию на какой либо тег, например div с классом modal_btn
    Вызов формы в модальном окне $(document).ready(function() { $(document).on("click", ".modal_btn", function(){ $("#small-modal").arcticmodal(); }); });
    Так как форма должна быть видна только в модальном окне ее нужно скрыть, поместив в div с атрибутом style=«display: none;», а также для стилизации модального окна обернуть в парочку стандартных дивов.
    x

    Вот мы и разобрались с основными настройками подключения нашего скрипта отправки форм на E-mail. Давайте теперь заглянем во внутрь и разберемся с настройкой полей, уведомлений да и всего остального, что там есть.

    Пример настроек для одной формыНастройки всех форм хранятся в файле feedback\index.php
    $form["form-1"] = array("fields" => array("name" => array("title" => "Имя", "validate" => array("preg" => "%%", "minlength" => "3", "maxlength" => "35",), "messages" => array("preg" => "Поле [ %1$s ] возможно содержит ошибку", "minlength" => "Минимальная длинна поля [ %1$s ] меньше допустимой - %2$s", "maxlength" => "Максимальная длинна поля [ %1$s ] превышает допустимую - %2$s",)), "tell" => array("title" => "Телефон", "validate" => array("preg" => "/^((8|\+)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{5,10}$/", "minlength" => "5",), "messages" => array("preg" => "Поле [ %1$s ] возможно содержит ошибку", "minlength" => "Минимальная длинна поля [ %1$s ] меньше допустимой - %2$s",)),), "cfg" => array("charset" => "utf-8", "subject" => "Тема письма", "title" => "Заголовок в теле письма", "ajax" => true, "validate" => true, "from_email" => "[email protected]", "from_name" => "noreply", "to_email" => "[email protected], [email protected]", "to_name" => "noreply1, noreply2", "geoip" => true, "referer" => true, "type" => "html", "tpl" => true, "antispam" => "email77", "antispamjs" => "address77", "okay" => "Сообщение отправлено - OK", "fuck" => "Сообщение отправлено - ERROR", "spam" => "Cпам робот", "notify" => "color-modal-textbox", "usepresuf" => false)); // Следующая форма $form["form-2"] = array("fields" => array(.....
    Для добавления настроек новой формы, нужно по примеру массива $form["form-1"] создать новый массив $form[""]

    Помните я говорил о обязательном атрибуте name="" ?

    Обязательным атрибутом для всех элементов формы является атрибут name="" - необходим для последующей настройки формы.
    Так вот пришло время рассказать для чего же он все таки нужен.
    name="" - это буквенно-цифровой ключ для массива, должен быть уникальным для массива $form[""]

    Пример html кода для наглядности

    Теперь давайте разберемся с массивами и для чего они нужны.

    $form["form-1"] = array();
    $form["form-2"] = array(); и т.д.
    Это основные массивы для каждой новой формы, содержат в себе:

  • "fields" => array(); - Массив настроек элементов формы.
    • "name" => array(); - Массив настроек элемента формы (например input name=«name» type=«text» ) который имеет ряд настроек.
      • "title" => "Ваше имя" - название элемента формы, будет выводится при ошибках или в шаблоне
      • "validate" => array(); - массив, содержит правила валидации элемента формы
        • "preg" => "%%" - регулярное выражение
        • "minlength" => "3" - минимальный размер поля
        • "maxlength" => "35" - максимальный размер поля
        • "substr" => "35" - всегда обрезать до N символов
      • "messages" => array(); - массив, содержит сообщения валидации, а именно:
        • "preg" => "Элемент формы не соответствует регулярному выражению"
        • "minlength" => "Минимальная длинна поля [ %1$s ] меньше допустимой - %2$s" - ошибка валидации, ключ(preg) не соответствие ключу валидации
        • "maxlength" => "Максимальная длинна поля [ %1$s ] превышает допустимую - %2$s" - ошибка валидации, ключ(preg) не соответствие ключу валидации
  • "cfg" => array(); - Массив настроек формы.
    • "charset" => "utf-8" - кодировка
    • "subject" => "Тема письма", - Тема письма
    • "title" => "Заголовок в теле письма", - Заголовок в теле письма
    • "ajax" => true, - это аякс форма TODO (если не нужно, поставить - false)
    • "validate" => true, - (true) если хотим валидацию формы на сервере, заменяет js валидацию при "ajax" => true. Когда выкл(false) то можно не задавать настройки validate полей. TODO
    • "from_email" => "myemail", - отправитель, указать имя поля(name=«myemail»), а если не нужно email от пользователя, тогда заглушку [email protected]
    • "from_name" => "myname", - отправитель, указать имя поля(name=«myname»), а если не нужно имени пользователя, тогда заглушку No-reply
    • "to_email" => "[email protected]", - email получателя. Для отправки на несколько адресов перечислить их через запятую. Пример ("to_email" => "[email protected], [email protected], [email protected]",)
    • "to_name" => "noreply1", - Имя получателя. При отправке на несколько адресов через запятую перечислить имена получателей. Пример ("to_name" => "noreply1, noreply2, noreply3",)
    • "geoip" => true, - узнать местоположение по типу TODO
    • "referer" => false, - добавлять URL страницы с которой была отправлена форма
    • "type" => "plain", - тип письма - plain, html (если используются html теги)
    • "tpl" => false, - использовать шаблон письма. Если true, то будет подключен файл шаблона, в соответствии с именем формы (name=«form-1»), из папки и обработан файл (feedback/tpl/form-1.tpl), в противном случае будет отправлено все как есть, каждое поле с новой строки
    • "antispam" => "email77", - Анти спам, метод основан на скрытом (display:none) поле, которое автоматом заполняет только робот, тем самым выдает себя.
    • "antispamjs" => "address77", - Анти спам, метод основан на скрытом (display:none) поле, изначально заполненное, которое автоматически очищает javascript при загрузке страницы, даже умный робот не может это предвидеть, и тогда он блокируется.
    • "okay" => "Сообщение пользователю", - Сообщение пользователю, выводится при условии успешно отправленной формы, можно использовать html теги.
    • "fuck" => "Сообщение пользователю", - Сообщение пользователю, выводится при возникновении ошибки отправки формы, можно использовать html теги.
    • "spam" => "Сообщение пользователю", - Сообщение пользователю, выводится при подозрении на спам робот, можно использовать html теги.
    • "notify" => "color-modal", - какой тип уведомлений показывать, textbox - блоки в верхнем углу страницы, color - цветная подсветка в форме, modal - модальное окно в центре страницы, none - отключить. Можно совмещать, пример: color-modal - ошибки заполнения подсветкой полей, а текстовый статус отправки в модальном окне TODO
    • "usepresuf" => false - Используется ли кастомное добавление к теме либо к заголовку письма, на случай не большого изменения можно указать например %%cfg.title.suffix%%, для этого в форме должно быть скрытое поле, подробнее, см. ф-цю presuf()
  • Настройка шаблонов писемИтак. давайте теперь разберемся с темизацией наших сообщений.
    Во-первых, для того, что-бы форма была отправлена в шаблоне, в настройках формы нужно включить использование файла шаблона - "tpl" => true ,
    Во-вторых, нужно создать файл шаблона с расширением *.tpl в папке (feedback/tpl/ ), в соответствии с именем формы (name=«form-1» ).

    Пример: (feedback/tpl/form-1.tpl )

    Заголовок в теле письма
    %%name.title%% %%name.value%%
    %%tell.title%% %%tell.value%%

    name , tell и т.д. - Это атрибуты (name="") полей которые заполняет пользователь.
    title - Название элемента формы, которое задается в массиве настроек элементов формы.
    value - Значение элемента формы.

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

    P.S. Скрипт разработан командой

    Сама форма обычно предназначена для получения от пользователя информации для дальнейшей пересылки её на сервер, где данные формы принимает программа-обработчик. Такая программа может быть написана на любом серверном языке программирования вроде PHP, Perl и др. Адрес программы указывается в атрибуте action тега , как показано в примере 1.

    Пример 1. Отправка данных формы

    HTML5 IE Cr Op Sa Fx

    Данные формы

    В этом примере данные формы, обозначенные атрибутом name (login и password ), будут переданы в файл по адресу /example/handler.php. Если атрибут action не указывать, то передача происходит на адрес текущей страницы.

    Передача на сервер происходит двумя разными методами: GET и POST, для задания метода в теге используется атрибут method , а его значениями выступают ключевые слова get и post . Если атрибут method не задан, то по умолчанию данные отправляются на сервер методом GET. В табл. 1 показаны различия между этими методами.

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

    http://www.google.ru/search?q=%D1%81%D0%B8%D1%81%D1%8C%D0%BA%D0%B8&ie=utf-8

    Уникальное сочетание параметров в адресной строке однозначно идентифицирует страницу, так что страницы с адресами?q=node/add и?q=node считаются разными. Эту особенность используют системы управления контентом (CMS, Content management system) для создания множества страниц сайта. В реальности же используется один файл, который получает запрос GET и согласно ему формирует содержимое документа.

    Ниже перечислены типовые области применения этих методов на сайтах.

    GET

    Передача небольших текстовых данных на сервер; поиск по сайту.

    Поисковые системы, формы поиска по сайту всегда отправляются методом GET, это позволяет делиться результатами поиска с друзьями, слать ссылку по почте или выкладывать её на форуме.

    POST

    Пересылка файлов (фотографий, архивов, программ и др.); отправка комментариев; добавление и редактирование сообщений на форуме, блоге.

    Работа с формой по умолчанию происходит в текущей вкладке браузера, при этом допустимо при отправке формы изменить этот параметр и открывать обработчик формы в новой вкладке или во фрейме. Такое поведение задаётся через «имя контекста», которое выступает значением атрибута target тега . Популярные значения это _blank для открытия формы в новом окне или вкладке, и имя фрейма, которое задаётся атрибутом name тега (пример 2).

    Пример 2. Открытие формы во фрейме

    HTML5 IE Cr Op Sa Fx

    Использование фрейма

    В данном примере при нажатии на кнопку «Отправить» результат отправки формы открывается во фрейме с именем area .

    Элементы формы традиционно располагаются внутри тега , тем самым определяя те данные, которые будут передаваться на сервер. В то же время в HTML5 есть возможность отделить форму от её элементов. Это сделано для удобства и универсальности, так, сложный макет может содержать несколько форм, которые не должны пересекаться меж собой или к примеру, некоторые элементы выводятся с помощью скриптов в одном месте страницы, а сама форма находится в другом. Связь между формой и её элементами происходит в таком случае через идентификатор формы, а к элементам следует добавить атрибут form со значением, равным этому идентификатору (пример 3).

    Пример 3. Связывание формы с полями

    HTML5 IE Cr Op Sa Fx

    Форма

    В этом примере тег однозначно отождествляется через идентификатор auth , а к полям, которые следует отправить с помощью формы, добавляется form="auth" . При этом поведение элементов не меняется, при нажатии на кнопку логин и пароль пересылаются на обработчик handler.php.

    Хотя параметры передачи формы традиционно указываются в теге , их можно перенести и в кнопки отправки формы ( и ). Для этого применяется набор атрибутов formaction , formmethod , formenctype и formtarget , которые являются аналогами соответствующих атрибутов без приставки form. В примере 4 показано использование этих атрибутов.

    Пример 4. Отправка формы

    HTML5 IE Cr Op Sa Fx

    Отправка формы

    Все новые атрибуты форм не поддерживаются некоторыми браузерами, в частности, Internet Explorer и Safari.

    » PHP Sendmail Script

    PHPSendMail

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

    | Скачано: раз

    Simple PHP Send Mail

    С этим очень ЛЁГКИМ php скриптом, посетители вашего сайта смогут отправлять письма непосредственно вам на почту через форму обратной связи.

    | Скачано: раз

    PHP + AJAX скрипт отправки форм на E-mail

    Универсальный скрипт отправки данных из форм на email. Скрипт идеально подойдет для сайтов типа Landing Page, сайтов визиток и т.д.

    | Скачано: раз

    PHP Mailer Final с капчей

    Скрипт выводит форму и, при заполнении необходимых полей, отправляет на Ваш e-mail сообщение. В скрипт встроена защита от роботов: перед отправкой письма надо ввести капчу.

    | Скачано: раз

    GentleSource Form Mail

    На ваш выбор две опции: или пользователь при помощи редиректа попадает на Thank-You-Page с вашим текстом или же, пользователю отображается информация, о том, что сообщение успешно отправлено.

    | Скачано: раз

    Micro Mailer

    Micro Mailer – это не большой PHP скрипт, который позволяет вам и посетителям вашего сайта отправить письмо любому адресату.

    | Скачано: раз

    Web4you-FM

    Web4you-FM Отправка письма с вашего сайта. Возможности: 1 - Выбор адресата и сколько их будет (от 1 до 4). 2 - Проверка на корректность заполнения формы. Кому. Имени, только буквы...

    | v.1.0 | Скачано: раз

    Light PHP Contact Form

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

    | Скачано: раз

    DodosMail

    DodosMail – это простой в установке PHP скрипт, который позволяет отправлять письма через форму обратной связи, на вашем сайте. Вам просто нужно загрузить php файл.

    | v.2.5 | Скачано: раз

    PHP Contact Form

    Скрипт PHP Contact Form включает в себя следующие функции: 1) функция предотвращения спама. Пользователь должен ввести защитный код, также известный как капча.

    | Скачано: раз

    TPCS Contact (email form)

    Этот TPCS Contact скрипт, позволит вашим посетителям связаться с вами через форму обратной связи. Вся информация будет отправлена вам на электронную почту.

    | Скачано: раз

    Feedback mailer

    Feedback mailer перенаправляет всю информацию из формы обратной связи на вашем сайте, напрямую к вам на почту. Этот маленький скрипт очень быстро обрабатывает все запросы.

    | v.1.2 | Скачано: раз

    Easy PHP Contact Form

    Простой, но безопасный PHP скрипт контакта с вебмастером при помощи формы обратной связи с проверкой кода (КАПЧА) для предотвращения спама.

    | v.2.1 | Скачано: раз

    PHP Contact form (with image verification)

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

    | Скачано: раз

    CW3 Form Mail

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

    | v.3.30 | Скачано: раз

    reCAPTCHA Contact Form

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

    | v.1.4 | Скачано: раз

    phMailer

    phMailer – это очень простой PHP скрипт обратной связи, который поддерживает функцию прикрепления файла (attachments) благодаря встроенной mail() function языка PHP.

    В данной статье мы предложим свою наработку универсальной отправки форм на E-mail с проверкой на заполненность средствами PHP и Jquery. Плагин легко можно интегрировать в любой сайт без глубокого анализа кода и архитектуры. В статье мы рассмотрим принцип работы плагина, процедуру инициализации, конфигурации и установки.

    Отличительные особенности и возможности плагина универсальной отправки форм:

    • Проверка заполненности форм с возможностью группировки элементов и выводом подсказок для пользователя
    • Множество шаблонов для отправки с возможностью автоматического выбора шаблона
    • Работа формы без перезагрузки - AJAX
    • Обработка удачных и ошибочных отправок
    • Уникальные заголовки писем
    • Отправка файлов на E-mail

    Универсальный плагин отправки форм с проверкой на E-mail состоят из основных частей:

    • HTML форма для заполнения
    • JQuery скрипт для проверки и отправки AJAX
    • PHP скрипт для автоматизации обработки данных, отправленных с формы, подключения шаблонов писем и обработки результатом отправки
    • PHPMailer в качестве smtp клиента для процедуры отправки письма
    • TPL файлы шаблонов отправки письма
    Установка примера плагина на хост веб-сервера и первая отправка формы на E-mail

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

    /css/style.css // Файл основных стилей /css/font-awesome.css // Файл стилей шрифта FontAwesome /fonts/* // Файлы шрифта /js/script.js // JQuery скрипт проверки и AJAX отправки формы /mail-tpl/* // Каталог файлов шаблонов /php/phpmailer/* // Каталог файлов PHPMailer /php/config.php // Конфигурация SMTP подключения /php/function-send-form.php //Функция обработки и универсальной отправки на почту E-mail index.html // HTML форма отправки

    Для дальнейшего первого опыта отправки демонстрационной формы нам необходимо сконфигурировать файл /php/config.php :

    $__smtp = array("host" => "smtp.host.ru", "debug" => 0, "auth" => true, "port" => "465", "username" => "[email protected]", "password" => "123456", "addreply" => "[email protected]", "replyto" => "[email protected]", "secure" => "ssl");

    Останавливаться подробно на процедуре конфигурации файла config.php мы не будем.

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

    http(https)://domen.domen/path/to/dir/index.html

    Если у нас открылась презентационная страница с описанием и формой - все сделано верно. Далее мы заполняем форму и ждем кнопку "Отправить". В случае успешной отправки форма выведем соответствующее сообщение. В случае ошибок при отправке - выведется информация об ошибке. Процедуру отладки PHPMailer мы так же рассматривать не будем.

    Установка и интеграция плагина универсальной отправки формы на E-mail на сайт

    Для установки плагина на существующий сайт необходимо:

    1. Копировать следующий перечень файлов и каталогов: /js/script.js // JQuery скрипт проверки и AJAX отправки формы /mail-tpl/* // Каталог файлов шаблонов /php/phpmailer/* // Каталог файлов PHPMailer /php/config.php // Конфигурация SMTP подключения /php/function-send-form.php //Функция обработки и универсальной отправки на почту E-mail2. Создать новую или отредактировать существующую форму по следующему примеру: ОБРАТНАЯ СВЯЗЬ radio 1 radio 2 radio 3 Я ознакомился и согласен с правилами Отправить

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

    2.1. Тег form:

    name - Определяет название шаблона tpl при обработке полученного массива POST скриптом function-send-form.php. Название шаблона письма должно соответствовать значению атрибута name и формируется по маске ".tpl "

    method - значение атрибута всегда POST. В противном случае функция обработки формы PHP не сработает. По умолчанию скрипт обработки данных function-send-form.php ориентирован только на POST параметры формы.

    class - атрибут может содержать любое количество набора классов, но для корректно работы JQuery скрипта необходимо наличие класса sendler. По данном классу происходит отслеживание события отправки формы на вашем сайте.

    2.2. Поля для заполнения внутри формы могут содержать следующие атрибуты:

    name - определяет имя POST параметра

    type - для корректно работы формы и распознания типов элементов формы атрибут рекомендуется к обязательному использованию

    title - выводит подсказку в тег, который указан классов в атрибуте текущего тега confirminfo

    class - все поля, обязательные для заполнения и проверки должны содержать в значении атрибута класс "Y-required ", "group000_Y-required ". group000_Y-required - группирует необходимые элементы в группы, для проверки заполненности одного из элементов группы. Radio группировать не нужно, группировка происходит про атрибуту name, как это заложено разработчиками type

    confirminfo - значение атрибута определяет класс тега, куда выводится предупреждение о незаполненности элемента формы

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

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

    3. В результате редактирования или создания формы должен отрабатывать JQuery обработка формы с функцией AJAX. Результат работы формы должен вернуться в тег с классом "response ". Если у вас что-то работает неправильно - свертись с примером, приложенным в виде архива к данной статье. Принцип работы плагина универсальной отправки форма на E-mail с проверкой

    Плагин отправки формы на E-mail работы в несколько этапов и по следующему принципу.

    1. Срабатывает событие отправки формы с классом sendler.

    2. Событие отправки формы перехватывает JQuery скрипт и запускает процедуру проверки формы на корректность заполнения.

    3. В случае нарушений правил заполнения формы скрипт добавляет к обязательным полям на заполнение класс wrong и, в случае наличия необходимых атрибутов title и confirminfo, выводит сообщения с подсказками для заполнения.

    4. В случае успешного прохождения проверки формы запускается функция отправки формы AJAX запросом на обработчик (ссылку), указанный в атрибуте action.

    5. Серверный обработчик получает необходимые параметры AJAX запроса, подключает необходмый шаблон письма (ориентируясь на атрибут name формы - POST параметр template). Далее происходит инициализация класса PHPMailer, формирования тела письма, заголовков и поцидура отправки письма на E-mail

    6. В случае успешно или неуспешной отправки письма серверный обработчик вернет соответствующее сообщение на страницу в JQuery скрипт

    Правила создания и редактирования tpl шаблонов письма

    Правила верстки html писем мы рассматривать не будем. Рассмотрим обязательные параметры tpl шаблона письма и принцип создания шаблонов для скрипта универсальной отправки формы на E-mail.

    Рассмотрим пример из архива:

    Заказ обратного звонка от:

    Данные для обратной связи:

    Время обратного звонка:

    Текст сообщения:

    // include футера письма, аналогично шапке

    Как можно заменить, значения атрибутов name тегов формы идентичны именам переменных в шаблоне письма tpl. Все верно, так оно и есть!

    Все вновь созданные шаблоны складываем в каталог mail-tpl с расширением файла .tpl .

    Название tpl документа должно совпадать значению атрибута name формы отправки на сайте.

    Завершение

    Пожалуй, это вся необходимая информация для эффективного использования плагина универсальной отправки форм на E-mail с проверкой. Всем спасибо за внимание!

    Дата добавления: 2011-12-01

    

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

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

    Первая трудность - глупый и устаревший стандарт для писем на русском языке. Из-за него к вам на почту могут приходить письма с "кракозябрами". Особенно эта проблема заметна на почтовых клиентах типа Windows Mail, Outlook Express и т.д. Если читать письма через веб-интерфейс, то проблема не так актуальна. Многие почтовые сервера достаточно умны, чтобы корректно отобразить письмо.

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

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

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

    Начнем с простейшего примера без наворотов.

    Создадим файл forms.php, который будет содержать форму для отправки сообщения.

    Мы только что создали форму с двумя текстовыми полями и кнопкой. Обратите внимание, что у формы мы определили метод post и указали в параметре action путь к обработчику формы - mail.php. Естественно, вы можете указать свой адрес и другое имя для файла.

    Теперь создадим файл mail.php (в нашем примере он должен находиться в той же папке).

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

    Укрепляем оборону

    В описанном примере есть минимальная защита в виде функции htmlspecialchars . Еще одной формой защиты может стать использование сессий.

    В самом начале первого файла введите следующее.