Обработчик отправки сообщения

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

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

Отправка сообщения с сайта на электронный адрес
Схема работы обработчика отправки сообщения с сайта

Обработчик отправки сообщения

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

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

чтобы полностью увидеть работу скрипта в действии, в демонстрации отправляйте свой РЕАЛЬНЫЙ электронный адрес!

Демо

Скрипт отправки данных на email

Переменная $_POST передаёт данные из поля для дальнейшей обработке их на сервере.



<?php
 /*
Название плагина: Обработчик отправки сообщения
Описание: Обработчик отправки сообщения с сайта из всплывающего окна
Plugin URI: http://www.pixelcom.crimea.ua
Версия: 1.0
Автор: Виктор Клим
Лицензия: GPL2
*/ ?>
<?php
//если пользователь нажал кнопку отправить
if (isset($_POST['submit'])) {


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



$ok = 'Указанный Вами e-mail принят';
 $no = 'Указанный Вами e-mail не принят';
 $no_key = 'Поле email - пустое';
 $no_email = 'Введите корректный e-mail';


В обработчике веб-формы первым действием нужно выполнить проверку т.е верификация введенных данных . На странице « Отправить cookie в браузер » Я добавил валидатор JavaScript который выполняет проверку пустого поля и регулярные выражения для поля email . Но, что делать если каким-то образом пользователь отключил работу скриптов в браузере. На помощь нам приходит PHP для проверки пустого поля и действительно ли пользователь отправил электронный адрес а не нечто другое. Так как мы собираемся добавить эл.адрес пользователя в базу данных, нам необходимо проверить данные которые отправил пользователь. Чтобы в базу данных не записывалось ни чего кроме эл.адреса в обработчик дополняем проверку формы на PHP .



//проверка пустого поля
if (empty($_POST['email']))
exit('<script>alert("'.$no_key.'");location.replace("cookie.php");</script>');

//проверка e-mail
if (!preg_match("/[0-9a-z_]+@[0-9a-z_\-^\.]+\.[a-z]{2,6}/i", $_POST['email']))
exit('<script>alert("'.$no_email.'");location.replace("cookie.php");</script>');


Если всё прошло удачно, для дальнейшей обработки получаем электронный адрес пользователя методом $_POST .



//получаем e-mail
$email = $_POST['email'];


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



//добавить e-mail в базу данных
include('db.php');


Запись в базу данных и сравнение строк  Я напишу в следующем уроке.

Отправка текста в сообщении

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



//отправка текста на почту
  $to = $email; // полученный e-mail
  $subject = 'Ответ с сайта ...';
  $message = '<html><body>Текст сообщения HTML</body></html>';


Отправить письмо на почту пользователя

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



// Отправка письма на почту пользователя
  $headers = array();
  $headers[] = "MIME-Version: 1.0";  // тип сообщения
  $headers[] = "Content-type: text/html; charset=utf-8"; //кодировка
  $headers[] = "From: Имя <my-noreply@mail.com>"; // от кого сообщение
  $headers[] = "Reply-To: имя получателя <{$email}>"; // email получателя из формы
  $headers[] = "Subject: {$subject}"; // заголовок сообщения
  $headers[] = "X-Mailer: PHP/".phpversion();  // версия PHP
  $headers[] = "Return-Path: <myemail@mail.ru>";  // email отправителя сообщения
  $headers[] = "Ответ на Ваш запрос"; // подзаголовок сообщения


Функция mail()

Функция mail() отправит массив заголовков и текст с тегами HTML.



// Функция mail()
  if (mail( $to, $subject, $message, implode("\r\n", $headers)))
  echo '<script>alert("'.$ok.'");location.replace("cookie.php");</script>';
  else echo '<script>alert("'.$no.'");location.replace("cookie.php");</script>';
}


Получить e-mail на электронный адрес

— как узнать на какой адрес отправилось сообщение?

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



// свои электронный адрес
$to  = 'myemail@mail.ru';

// Функция mail()
if (mail( $to, $subject, $message, implode("\r\n", $headers)));


После отправки сделаем так чтобы окно с формой не появлялось 30 дней.



// Куки на 30 дней
setcookie( 'popup', $email, strtotime( '+30 days' ), '/' );


Заключение

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML -теги и атрибуты: <a href= http://pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>