Введение
В этой статье я хочу показать, как быстро и просто реализовывается форма обратной связи на php. Задача эта не новая, но практически при создании каждого сайта всплывает необходимость в такой форме. Чтобы постоянно не изобретать велосипед, я решил набросать эту статью.
Для создания формы обратной связи нам потребуется php, поскольку отправки писем на одном html невозможна. Все что нам потребуется — это один файл, например расположим его в папке /feedback/ и назовем index.php.
Логика формы следующая: при загрузке страницы, делаем проверку — были отправлены данные или нет. Если ни чего не отправлялось, то просто отображаем форму с полями — имя, e-mail и текст сообщения. Если же данные были отправлены, то проверим что нам пришло. В случае, когда все данные корректные, отправляем их на свой почтовый ящик. А когда данные не корректные, например, не все поля были заполнены, мы будем выводить сообщение о ошибке.
С логикой разобрались, теперь нужно написать код.
Простая форма обратной связи на 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 = "my@mail.ru"; // тема письма $subject = "Письмо с обратной связи"; // заголовок письма $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма $headers .= "From: Тестовое письмо <no-reply@test.com>\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="<?=$_SERVER['PHP_SELF'];?>" 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>
Вот и все, для тех копу не терпится попробовать форму в действии, я выложил исходники в архиве — вот тут.