Форма обратной связи на PHP с отправкой на e-mail
На этом уроке мы познакомимся с функцией mail (), на примере создания формы обратной связи на PHP с последующей отправкой полученных данных на почту.
Для этого создадим два файла - forma.php и mail.php. В первом файлике будет находиться только форма с полями для ввода пользователем данных. Внутри тега form - кнопка "Отправить" и атрибут action, который ссылается на обработчик - mail.php, именно к нему обращаются данные из формы при нажатии кнопки "Отправить". В нашем примере данные формы отправляются на веб-страницу с названием «/mail.php». На этой странице прописан скрипт на PHP, который обрабатывает данные формы :
<form action="./mail.php" method="post">
Данные формы отправляются методом POST (обрабатывается как $ _POST). $ _POST - это массив переменных, переданных текущему скрипту через метод POST.
Ниже вы видите содержимое файла forma.php, поля которой заполняет сам пользователь на каком-нибудь веб-сайте. Все поля для ввода данных обязательно должны иметь атрибут name, значения мы прописываем сами, исходя из логики.
<!DOCTYPE html>
<html>
<head>
<title>Форма обратной связи на PHP с отправкой на почту</title>
</head>
<body>
<h2>Форма обратной связи на PHP</h2>
<!--Данные введенные пользователем обрабатываются кодом в mail.php-->
<form action="./mail.php" method="post">
<!--Тег используется для группировки связанных элементов в форме-->
<fieldset>
<!--Тег задает заголовок для групповых элементов-->
<legend>Оставьте сообщение:</legend>
Ваше имя:
<!--Устанавливает однострочное текстовое поле ввода:-->
<input type="text" name="name">
<!--Используется для полей ввода, которые должны содержать адрес электронной почты.-->
E-mail:
<input type="text" name="email">
Номер телефона:
<input type="text" name="phone">
Сообщение:
<!--Тег разрешает многострочный ввод текста.-->
Текстовая область может содержать неограниченное количество символов-->
<textarea rows="10" cols="45" name="message"></textarea>
<!--Устанавливает кнопку для отправки данных формы в обработчик формы.-->
<input type="submit" value="Отправить сообщение">
</fieldset>
</form>
</body>
</html>
Так форма визуально выглядет в браузере.
Далее пишем код для файла mail.php. Придумываем сами имена для переменных. В PHP переменная начинается со знака $, а затем имя переменной. Текстовое значение переменной заключается в кавычки. С помощью переменных на емайл администратора передается содержимое формы, просто подставив в квадратные скобки имя элемента формы - значение name.
<?php
$to = "[email protected]"; // емайл получателя данных из формы
$tema = "Форма обратной связи на PHP"; // тема полученного емайла
$message = "Ваше имя: ".$_POST['name']."<br>";//присвоить переменной значение, полученное из формы name=name
$message .= "E-mail: ".$_POST['email']."<br>"; //полученное из формы name=email
$message .= "Номер телефона: ".$_POST['phone']."<br>"; //полученное из формы name=phone
$message .= "Сообщение: ".$_POST['message']."<br>"; //полученное из формы name=message
$headers = 'MIME-Version: 1.0' . "\r\n"; // заголовок соответствует формату плюс символ перевода строки
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; // указывает на тип посылаемого контента
mail($to, $tema, $message, $headers); //отправляет получателю на емайл значения переменных
?>
Таким образом данные из массива $_POST будут переданы соответствующим переменным и отправлены на почту при помощи функции mail. Давайте заполним нашу форму и нажмем кнопку отправить. Не забудьте указать ваш е-майл. Письмо пришло моментально.
Как видите создавать форму обратной связи на PHP с отправкой на e-mail не так и сложно. Хотите узнать как сохранить данные, полученные из формы в файл или в базу данных? Этому научит вас мой видеокурс "PHP и MySQL с Нуля до Гуру".
-
- Михаил Русаков
Комментарии (9):
Я как-то давно посмотрел видео из курса от Михаила Русакова. Там была форма, которая регистрировала пользователей. С тех пор я сам дошел до представленной выше конструкции, хотя посмотрел совсем другой урок.)
Ответить
так и должно быть при обучении, если встречаются: хороший учитель и усердный ученик.
Ответить
Так точно! вот я например никогда не создавал интернет магазины, а сделал за неделю
Ответить
Привет, в этой форме при нажатии кнопки "Отправить сообщение" будет перебрасывать на файл mail.php? А можно как-то сделать, чтобы он не открывался?
Ответить
У меня тоже проблема, форма отправляется пустой как только на нее перейти. Как можно перейти на нее без преждевременной отправки формы?
Ответить
Добрый день! По строке скрипта: $message = "Номер телефона: ".$_POST['phone']."<br>"; выдаёт ошибку syntax error, unexpected '$message' (T_VARIABLE) Помогите пож. не вижу что не так. Это вторая команда в скрипте $message, пробовал и $message ., как в примере, и $message2, всё равно выдаёт ошибку.
Ответить
я честно не мучаюсь и использую сайт https://formfor.site, пока не жалуюсь. Сообщения уходят в telegram и почту.
Ответить
smineral - обработка и интеграция без конструктора форм даже. чем этот сервис лучше например qform24.com ? где всё тоже самое только 1. бесплатно полностью. 2. есть конструктор форм и так же подключение обработчика к готовой форме 3. есть кабинет по работе с заявками внутри сервиса, а не только экспорт в мессенджеры и все остальные функции что там заявлены тоже есть.
Ответить
Отличный мини проект формы) все что нужно есть. Только подскажите пожалуйста как сделать сообщение об успешном отправлении сообщения? а то кидает на файл mail.php, может даже просто в виде модального окна - но чтобы не кидало на файлик. отправка работает - письмо пришло молниеносно)
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.