Как сделать форму обратной связи на PHP

Делаем форму обратной связи

Наверняка на многих сайтах вы видели форму обратной связи. Как правило она позволяет наиболее быстрым образом отправить какое-то послание администраторам сайта, так как представляет собой простое текстовое поле, в которое можно просто ввести любой текст и нажать кнопку «Отправить». В данном уроке мы сделаем форму обратной связи на PHP.

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

Сама форма будет выглядеть следующим образом:
форма обратной связи на PHP

Давайте создадим файл с именем feedback.php и напишем HTML-код формы.

Код доступен только после покупки курса PHP для начинающих.

Давайте будем записывать данные, переданные пользователем в файл feedback.txt. Так как мы не хотим, чтобы данный файл был доступен всем желающим, нельзя положить его в папку www. Поэтому в папке myproject.loc рядом с папкой www создадим ещё одну папку с именем private. А внутри неё уже создадим файл feedback.txt. Должно получиться вот так:
структура папок для формы обратной связи

Осталось только написать логику, которая будет сохранять текст, переданный пользователем.
Для этого нам нужно:

  1. Получить данные POST-запроса, и убедиться, что переданный текст не пустой
  2. Дозаписать в конец файла этот текст. При этом перед текстом следует добавить дату и время создания записи.

Делается это проще простого:

Код доступен только после покупки курса PHP для начинающих.

Пройдёмся по тому, что для нас новенькое.

  • Функция date() возвращает дату в указанном формате. Ей мы передаём константу DATE_ATOM, которая содержит в себе строку: "Y-m-d\TH:i:sP". В итоге будет сформирована следующая дата: 2018-04-09T06:13:38+03:00.
  • Далее мы видим приведение результата выполнения функции file_put_contents к типу boolean. Дело в том, что эта функция возвращает число байт, записанных в файл, или false – если произошла ошибка при записи. Таким образом, если мы хоть что-то записали, то после преобразования любого ненулевого числа к типу boolean мы получим true. Результат этого выражения мы положили в переменную isWrote (записано ли), и затем смотрим – если true, то в $result положим текст о том, что сообщение успешно отправлено, а иначе – положим туда текст с ошибкой.

Всё остальное нам уже знакомо.

Проверка

Давайте теперь проверим работу формы и отправим несколько сообщений.
Сообщение в форме обратной связи

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

Давайте теперь посмотрим содержимое файла feedback.txt.
Сохраненные сообщения из формы обратной связи

Как видим, всё записалось. Для того чтобы можно было связаться с отправителем, на форму стоит добавить поле email и записывать его тоже.

Вот и всё :)