Я начну работать, к вечеру покажу результат, предоплату можно внести вечером, если вы во мне сомневаетесь

Простая форма обратной связи на 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

Рекомендованные

 

Вам также будет интересно

 

Оставить комментарий

avatar
  Подписаться  
Уведомление о