Как сделать форму обратной связи php
Делаем форму обратной связи
Наверняка на многих сайтах вы видели форму обратной связи. Как правило она позволяет наиболее быстрым образом отправить какое-то послание администраторам сайта, так как представляет собой простое текстовое поле, в которое можно просто ввести любой текст и нажать кнопку «Отправить». В данном уроке мы сделаем форму обратной связи на PHP.
Для большей простоты мы напишем скрипт, который будет записывать обращения пользователя в файл.
Сама форма будет выглядеть следующим образом:
Давайте создадим файл с именем feedback.php и напишем HTML-код формы.
Давайте будем записывать данные, переданные пользователем в файл feedback.txt. Так как мы не хотим, чтобы данный файл был доступен всем желающим, нельзя положить его в папку www. Поэтому в папке myproject.loc рядом с папкой www создадим ещё одну папку с именем private. А внутри неё уже создадим файл feedback.txt.
Осталось только написать логику, которая будет сохранять текст, переданный пользователем.
Для этого нам нужно:
Делается это проще простого:
Пройдёмся по тому, что для нас новенькое.
Всё остальное нам уже знакомо.
Проверка
Давайте теперь проверим работу формы и отправим несколько сообщений.
После отправки сообщений будет выводиться соответствующее уведомление.
Давайте теперь посмотрим содержимое файла feedback.txt.
Как видим, всё записалось. Для того чтобы можно было связаться с отправителем, на форму стоит добавить поле email и записывать его тоже.
Делаем форму обратной связи на PHP
Итак, давайте приступим, первым делом мы разметим страницу и пропишем для неё стили. Разметка будет включать в себя обычную форму обратной связи с двумя input (телефон, почта) и одной текстовой областью, куда, по нашей задумке, пользователь будет вводить своё сообщение. Обработчик формы разместим на отдельной странице.
В результате всех этих действий получится вот такая форма:
Теперь пришло время заняться сервером. Наш скрипт будет включать в себя несколько частей:
Все эти части, конечно, условные, так как нам никто не мешает сделать из кода кашу или наоборот вынести ключевые части в другие файлы. Но я думаю, обработчик лучше делать одним файлом, чтобы было удобно его подключать к другим проектам.
Настройка
Вспомогательные функции
Здесь опишем пять функций, которые упростят обработку данных.
Шаблоны вывода сообщений:
Очистка данных пришедших с формы:
И последняя функция, которая будет проверять телефон и почту на правильность записи их формата.
Как видите все написанные нами функции небольшого размера. Можно было их не выносить за приделы обработки данных, но, когда вам потребуется что-то изменить или расширить, например check_format(), это будет гораздо проще и удобнее.
Обработка пришедших данных
Первым делом мы узнаём, с какой страницы пришёл пользователь. Потом определяем переменные, в которых будут храниться наши сообщения и статус отправки письма.
Теперь, чтобы не возникло проблем с кодировкой, указываем её при помощи заголовка.
Далее пишем сам код обработки данных.
В написанном коде мы определяем, была ли отправлена форма, в противном случае закрываем этот файл при помощи функции exit. Далее проверяем наличие в массиве POST ячеек с нашими данными, если они пришли, чистим их от возможного мусора. После очистки проверяем форматы почты и телефона, а также наличие текста в переменной вопроса. Далее формируем письмо, отправляем и пишем логии, где, помимо данных, сохраняем статус отправки письма. Так мы сможем отследить работу функции mail() и одновременно не потерять данные.
Вывод сообщений
Нам осталось только оповестить пользователя об успешной или «не очень» выполненной операции и вернуть его обратно на сайт с формой. Для этого мы используем разметку с включениями PHP скрипта.
Для перенаправления пользователя обратно на сайт, мы воспользуемся метатегом refresh, где делаем вставки PHP кода уже с созданными переменными. Ещё нам потребуются немного использовать JavaScript, чтобы сделать страницу чуть динамичней. Пишем функцию timeBack(), которая будет в обратном порядке считать секунды до перенаправления.
3 способа. Как сделать форму обратной связи на html?
Существует несколько способов реализовать данную фичу у себя. Их можно поделить по уровню сложности, а так же по требованиям от хостинга.
Способ №1. Форма обратной связи html + php.
Данный способ подойдет вам, если необходимо максимально расширяемое решение. Данную форму можно сделать какую угодно. Запрашивать любые данные у пользователей, которые вам необходимы. Можно сделать отправку файлов, капчу, отправку фото, адресов страниц от куда была совершена отправка и многое, многое другое.
Для данной формы вам потребуется:
Начнем с создания PHP файла который будет обрабатывать запросы пользователей на сервере. Он должен, проверить, все ли необходимые поля были заполнены и если все нормально, отправить сообщение.
Далее давай те напишем HTML код формы
Ну и конечно же файл CSS, что-бы все облагородить)
Вот, что получилось в итоге.
Способ №2. Сервис для формы обратной связи.
Сервисов форм достаточно много, мы разберем форму от яндекса. Сервис позволяет составить свою форму практически с любыми полями. Настроить тему, почту, уведомления. А так-же, все это, можно сделать без знаний программирования так как у таких сервисов есть конструктор, с помощью которого можно собрать все визуально, перетаскивая блоки и настраивая параметры.
Для данного способа вам понадобиться:
У Google и Яндекса есть отличные сервисы для создания различных форм, опросов и всего подобного. Вам остается настроить все, что вам нужно в визуальном редакторе, получить код и вставить на нужной странице. Собственно все, можно настроить уведомления на почту или просматривать результаты в ручную.
Я собрал вот такую форму на сервисе Яндекса.


После составления формы, нужно лишь скопировать полученный по кнопке “поделиться” код и вставить в нужное место на странице вашего сайта.
Способ №3. Ссылка для отправки email.
Самый простой способ реализовать связь разработчика и пользователя. Оставить свою почту на сайте. Но мы ведь любим упрощать жизнь пользователям. Поэтому разместим не просто адрес, а ссылку адрес. Выглядит такая ссылка вот так:
Такую ссылку можно усложнить и задать сразу еще и тему к примеру
При клике по такой ссылке, пользователь перейдет в клиент электронной почты и сможет отправить вам сообщение. Также саму ссылку можно украсить с помощью CSS стилей, но это уже совсем другая история.
Простая форма обратной связи на php
Введение

Для создания формы обратной связи нам потребуется php, поскольку отправки писем на одном html невозможна. Все что нам потребуется — это один файл, например расположим его в папке /feedback/ и назовем index.php.
Логика формы следующая: при загрузке страницы, делаем проверку — были отправлены данные или нет. Если ни чего не отправлялось, то просто отображаем форму с полями — имя, e-mail и текст сообщения. Если же данные были отправлены, то проверим что нам пришло. В случае, когда все данные корректные, отправляем их на свой почтовый ящик. А когда данные не корректные, например, не все поля были заполнены, мы будем выводить сообщение о ошибке.
С логикой разобрались, теперь нужно написать код.
Простая форма обратной связи на php. Код
Ниже я привел код полностью рабочей формы обратной связи с подробными комментариями.
Вот и все, для тех копу не терпится попробовать форму в действии, я выложил исходники в архиве — вот тут.
Простая форма обратной связи на php: 7 комментариев
Спасибо большое автору за доступное пояснение. Мне как новичку пригодилось. Если будут статьи как такую простенькую форму максимально безопасно внедрить в самый простой модуль джумлы для собственных нужд, было бы прекрасно. Все доступные компоненты очень тяжелые и мудреные. А это решение само по себе прекрасно. ReCapcha Google с ней работает отлично в джумле. Вопросы только по методу отправки. Через настроенный SMTP не очень хочет работать. Хорошо сложилось только с phpMail
Здравствуйте! Ваш код не работает. На емеил ничего не приходит.
Добрый день! Проверьте, что возвращает функция mail. Возможно сервер не отправляет письмо. Если пробуете локально, то скорее всего не будет работать. Можно вместо стандартного mail использовать smtp: https://vk-book.ru/novaya-versiya-klassa-sendmailsmtpclass-otpravka-fajlov-cherez-smtp-s-avtorizaciej-po-protokolu-ssl-na-php/
Нихрена не работает. В полях выводится код вместо плейсхолдеров. При отправке пишет, что такого пути нет —
Делаем форму обратной связи на сайте
Говорят, что если программист может написать форму обратной связи, он может написать всё.
Форма обратной связи — древнейшее программистское искусство. Тут есть всё: форма с проверкой, приём запроса, обработка, безопасность, хранение и ответ. Это как Hello World, только для самых крутых.
В сегодняшней версии программы — только самые основы этого упражнения. В следующих частях мы прокачаем систему.
Смысл программы в том, что посетитель страницы заполняет нужные поля, пишет текст сообщения и нажимает кнопку «Отправить». На почту владельцу сайта приходит письмо с текстом сообщения и данными о том, кто это сообщение отправил.
Чтобы сделать у себя на сайте такое, нам понадобится:
Сервер для PHP
Для того, чтобы PHP-код исполнялся, нужен какой-то компьютер-исполнитель. Мы называем его сервером — то есть «раздающим». На сервере должна работать программа для PHP, которое отвечает за правильную обработку таких файлов.
Когда мы делали проект «Публикуем свою страницу в интернете», то уже использовали сервер (эту услугу нам предоставила хостинговая компания SpaceWeb). Этот же сервер мы можем использовать для нашей сегодняшней задачи, потому что он тоже умеет работать с PHP-файлами:
Готовим страницу с формой
Возьмём стандартный шаблон страницы и наполним его стилями и кодом для формы.
Пропишем CSS-стили, чтобы наша страница выглядела опрятно. Забежим немного вперёд и используем в стилях разделы input и textarea :
Чтобы сделать форму на странице, мы будем использовать такие теги:
— для ввода имени, почты для связи и темы письма. Они занимают одну строку, нам этого достаточно.
— здесь будут писать само сообщение, поэтому нужно будет сделать это поле побольше и пошире.
Ещё мы воспользуемся тегом
Пишем обработчик формы на PHP
Когда мы заполним и отправим форму на нашей странице, произойдёт следующее:
Логика работы PHP-программы будет такая:
Отправляем PHP-скрипт на сервер
Последнее, что осталось сделать — загрузить файл скрипта на сервер. Для этого сохраним его как post.php и загрузим по адресу mihailmaximov.ru/projects/mail/post.php. Если у вас ещё нет своего сервера, можете использовать этот скрипт для тестирования формы обратной связи.
Как загружать файлы, мы рассказывали в статье про публикацию сайта в Сети, поэтому просто сделаем всё по той инструкции:
Теперь, когда мы обновим HTML-страницу, заполним все поля и нажмём «Отправить», на указанную почту придёт письмо с нашим сообщением. Это значит, что форма работает, а мы с вами сделали очередной полезный проект!
Что дальше
Дальше как обычно — улучшаем.








