Простая форма обратной связи на PHP. Отправка данных из формы на почту — PROG-TIME

Простая форма обратной связи на PHP. Отправка данных из формы на почту

14.02.2018
Содержание:

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

Для того чтобы ваша форма работала, необходимо:

  1. Писать код в php файле (название.php)
  2. Наличие локального сервера Open Server, Denwer. Или можно загрузить файл на хостинг.

Начнём с HTML:

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Обратная связь</title>
</head>
<body>
<br/>
<?= $msg_box; // вывод сообщений ?>
<br/>

<form action="путь_к_файлу_обработчика" method="post" name="frm_feedback">

<label>Ваше имя:</label><br/>
<input type="text" name="user_name" value="<?=($_POST['user_name']) ? $_POST['user_name'] : ""; // сохраняем то, что вводили?>" /><br/>
<label>Ваш e-mail:</label><br/>
<input type="text" name="user_email" value="<?=($_POST['user_email']) ? $_POST['user_email'] : ""; // сохраняем то, что вводили?>" /><br/>
<label>Текст сообщения:</label><br/>
<textarea name="text_comment"><?=($_POST['text_comment']) ? $_POST['text_comment'] : ""; // сохраняем то, что вводили?></textarea>
<br/>
<input type="submit" value="Отправить" name="btn_submit" />
</form>

</body>
</html>

Здесь стандартный базовый шаблон.
В body, мы пишем вывод сообщений и форму, которая будет состоять из нескольких полей, в нашем случае это email, имя и сообщение. Для каждого поля нужно задать уникальный атрибут name.

В атрибут value, мы пишем <?=($_POST[‘user_email’]) ? $_POST[‘user_email’] : «»; ?>, этот скрипт, сохраняет введённые данные, после обновления страницы. В теге textarea нет значение value, поэтому мы пишем этот скрипт в сам тег.

Теперь перейдём в PHP:

<?php
$msg_box = ""; // в этой переменной будем хранить сообщения формы

if($_POST['btn_submit']){
$errors = array(); // контейнер для ошибок
// проверяем корректность полей
if($_POST['user_name'] == "") $errors[] = "Поле 'Ваше имя' не заполнено!";
if($_POST['user_email'] == "") $errors[] = "Поле 'Ваш e-mail' не заполнено!";
if($_POST['text_comment'] == "") $errors[] = "Поле 'Текст сообщения' не заполнено!";

// если форма без ошибок
if(empty($errors)){
// собираем данные из формы
$message = "Имя пользователя: " . $_POST['user_name'] . "<br/>";
$message .= "E-mail пользователя: " . $_POST['user_email'] . "<br/>";
$message .= "Текст письма: " . $_POST['text_comment'];
send_mail($message); // отправим письмо
// выведем сообщение об успехе
$msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
}else{
// если были ошибки, то выводим их
$msg_box = "";
foreach($errors as $one_error){
$msg_box .= "<span style='color: red;'>$one_error</span><br/>";
}
}
}
// функция отправки письма
function send_mail($message){
// почта, на которую придет письмо
$mail_to = "адрес_почты_получателя_";
// тема письма
$subject = "Письмо с обратной связи";

// заголовок письма
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма
$headers .= "From: Тестовое письмо <адрес_почты_на_хосте>\r\n"; // от кого письмо

// отправляем письмо
mail($mail_to, $subject, $message, $headers);
}
?>

У нас есть 2 варианта добавления скрипта, либо в отдельный файл, либо в файл с формой. Если добавить файл в отдельный файл, то в форме необходимо изменить атрибут action и записать в него путь к файлу со скриптом. Если добавлять скрипт в файл с формой, то скрипт необходимо заключить внутри тега <?php ?>, а сам код разместить до HTML.

Скрип читается так…

В переменной $msg_box будут выводится все сообщения работы формы.

Если кнопка btn_submit нажата, то создается массив errors в который мы будем записывать ошибки.

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

Далее если массив ошибок пуст, то мы запускаем обработчик. В переменную message мы записываем данные которые будут отправлять вам на почту.

После этого мы записываем функцию отправки формы send_mail($message). Функцию я записал чуть ниже. Отправляется сообщение и выводится текст об успешной отправке.

Функция обработки выглядит, следующим образом…

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

В переменную subject записывается название письма.

Далее идут правила обработки формы. Здесь же мы пишем от кого письмо и вводим адрес почты.

И в конце мы отправляем форму через функцию mail.

На этом все. Вот так выглядит полный код формы обратной связи.

<?php
$msg_box = ""; // в этой переменной будем хранить сообщения формы

if($_POST['btn_submit']){
$errors = array(); // контейнер для ошибок
// проверяем корректность полей
if($_POST['user_name'] == "") $errors[] = "Поле 'Ваше имя' не заполнено!";
if($_POST['user_email'] == "") $errors[] = "Поле 'Ваш e-mail' не заполнено!";
if($_POST['text_comment'] == "") $errors[] = "Поле 'Текст сообщения' не заполнено!";

// если форма без ошибок
if(empty($errors)){
// собираем данные из формы
$message = "Имя пользователя: " . $_POST['user_name'] . "<br/>";
$message .= "E-mail пользователя: " . $_POST['user_email'] . "<br/>";
$message .= "Текст письма: " . $_POST['text_comment'];
send_mail($message); // отправим письмо
// выведем сообщение об успехе
$msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
}else{
// если были ошибки, то выводим их
$msg_box = "";
foreach($errors as $one_error){
$msg_box .= "<span style='color: red;'>$one_error</span><br/>";
}
}
}
// функция отправки письма
function send_mail($message){
// почта, на которую придет письмо
$mail_to = "адрес_почты_получателя_";
// тема письма
$subject = "Письмо с обратной связи";

// заголовок письма
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма
$headers .= "From: Тестовое письмо <адрес_почты_на_хосте>\r\n"; // от кого письмо

// отправляем письмо
mail($mail_to, $subject, $message, $headers);
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Обратная связь</title>
</head>
<body>
<br/>
<?= $msg_box; // вывод сообщений ?>
<br/>
<form action="index.php" method="post" name="frm_feedback">
<label>Ваше имя:</label><br/>
<input type="text" name="user_name" value="<?=($_POST['user_name']) ? $_POST['user_name'] : ""; // сохраняем то, что вводили?>" /><br/>

<label>Ваш e-mail:</label><br/>
<input type="text" name="user_email" value="<?=($_POST['user_email']) ? $_POST['user_email'] : ""; // сохраняем то, что вводили?>" /><br/>

<label>Текст сообщения:</label><br/>
<textarea name="text_comment"><?=($_POST['text_comment']) ? $_POST['text_comment'] : ""; // сохраняем то, что вводили?></textarea>

<br/>
<input type="submit" value="Отправить" name="btn_submit" />
</form>

</body>
</html>

Все файлы из данной записи:

https://yadi.sk/d/0OiwIkDI3SP939

На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime
Наши планы
  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube

Контакты для связи

Технология на prog-time
Telegram
https://t.me/prog_time_bot