Обработка HTML формы с помощью PHP

Обработка HTML формы с помощью PHP

Вы имеете свой собственный web-сайт и хотите получать от своих пользователей письма или сообщения, вопросы, советы или просто пожелания по электронной почте, тогда этот урок для вас!

Как отправить сообщение по e-mail

Нам нужны следующие файлы:

  1. form.html – страница с формой.
  2. form_processing.php – файл со скриптом, обрабатывающим HTML форму.

Ваше имя:

E-mail:

Тема:

Сообщение:


HTML форма содержит поля для ввода имени, почтового адреса пользователя, темы сообщения, текста сообщения и кнопку «Отправить», при нажатии на которую, информация отправляется на обработку к PHP скрипту в файл form_processing.php .

Метод гипертекстового транспортного протокола имеет два значения: get (по умолчанию) и post . Чаще используется метод post , так как позволяет передавать большие объемы данных. Все значения, передающиеся к обрабатывающему скрипту посредством метода post , сохраняются в ассоциативном массиве $_POST (этот массив изначально встроен в php интерпретатор), который состоит из переменных $_POST[name] , где name – фактическое имя поля ввода – значение атрибута name=»» :

Переменная Содержит значение .
$_POST[«your_name»] . поля «your_name»
$_POST[«email»] . поля «email»
$_POST[«tema»] . поля «tema»
$_POST[«message»] . текстового поля «message»

Создадим файл-обработчик form_processing.php :

/* Осуществляем проверку вводимых данных и их защиту от враждебных
скриптов */
$your_name = htmlspecialchars ( $_POST [ «your_name» ]);
$email = htmlspecialchars ( $_POST [ «email» ]);
$tema = htmlspecialchars ( $_POST [ «tema» ]);
$message = htmlspecialchars ( $_POST [ «messages» ]);
/* Устанавливаем e-mail адресата */
$myemail = «my_email@mail.ru» ;
/* Проверяем заполнены ли обязательные поля ввода, используя check_input
функцию */
$your_name = check_input ( $_POST [ «your_name» ], «Введите ваше имя!» );
$tema = check_input ( $_POST [ «tema» ], «Укажите тему сообщения!» );
$email = check_input ( $_POST [ «email» ], «Введите ваш e-mail!» );
$message = check_input ( $_POST [ «message» ], «Вы забыли написать сообщение!» );
/* Проверяем правильно ли записан e-mail */
if (! preg_match ( «/([\w\-]+\@[\w\-]+\.[\w\-]+)/» , $email ))
show_error ( »
Е-mail адрес не существует» );
>
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail = «Здравствуйте!
Вашей контактной формой было отправлено сообщение!
Имя отправителя: $your_name
E-mail: $email
Текст сообщения: $message
Конец» ;
/* Отправляем сообщение, используя mail() функцию */
$from = «From: $yourname \r\n Reply-To: $email \r\n» ;
mail ( $myemail , $tema , $message_to_myemail , $from );
?>

Ваше сообщение было успешно отправлено!

На Главную >>>

/* Если при заполнении формы были допущены ошибки сработает
следующий код: */
function check_input ( $data , $problem = «» )
$data = trim ( $data );
$data = stripslashes ( $data );
$data = htmlspecialchars ( $data );
if ( $problem && strlen ( $data ) == 0 )
show_error ( $problem );
>
return $data ;
>
function show_error ( $myError )
?>

Пожалуйста исправьте следующую ошибку:



exit();
>
?>

— выведет указанный текст, если поля HTML формы были заполнены правильно. index.php – главная страница вашего сайта.


Пожалуйста исправьте следующую ошибку:


— укажет характер допущенной ошибки.

$from = «From: $yourname \r\n Reply-To: $email \r\n» ;
?>

— автоматически отобразит e-mail пользователя в нужной строке, когда вы будете писать ответ.

Комментарии внутри кода помогут разобраться в деталях PHP сценария.

Итак, необходимые файлы созданы, пришло время загрузить их на сервер, на тот, что предоставлен хостинг-провайдером.

form_processing.php остается скрытым от посетителей, а form.html – не что иное, как страница с контактной формой.

Автор проекта — Вася Митин | Дата публикации: Hoябрь 2009 | Обновление: Ноябрь 2018

Установка сервера Apache, MySQL и PHP Обработка HTML формы с помoщью PHP

© 2009 — 2023 | При использовании материала, ссылайтесь на мой сайт!
По всем вопросам обращайтесь: go@ab-w.net | PHP обработка HTML формы? – Не вопрос!

Источник

Массивы $_POST и $_GET в PHP. Обработка форм

Формы — это часть языка HTML. Формы нужны для передачи данных от клиента на сервер. Чаще всего формы используются для регистрации пользователей, заполнения анкет, оформления заказа в интернет магазине, и так далее.

Через формы можно отправлять как простую текстовую информацию, так и файлы.

Большую часть времени программирования на PHP вы будете так или иначе работать с формами и данными из них.

HTML описывает то, из каких элементов состоит форма, и как она выглядит. Но без принимающей стороны, то есть сервера, который принимает эти данные и обрабатывает их нужным образом, создавать формы нет никакого смысла.

PHP содержит множество средств для работы с формами. Это позволяет очень просто решать типичные задачи, которые часто возникают в веб-программировании:

  • Регистрация и аутентификация пользователя;
  • Отправка комментариев на форумах и социальных сетях;
  • Оформление заказов.

Практически любой современный сайт содержит как минимум несколько разных HTML-форм.

Отправка формы

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

Такая форма в HTML может выглядеть следующим образом:

 

Это очень простая форма, состоящая из трёх полей и одной кнопки отправки.

Почти весь приведённый код описывает внешний вид и содержание формы, но следует обратить внимание на два атрибута тега , которые нужны для указания на способ обработки данных:

method — этот атрибут используется для определения метода HTTP, который будет использован для передачи данных на сервер. Вы уже знакомы с HTTP-методом GET, предписывающим серверу просто вернуть определённый документ.

Метод POST сообщает о намерении передать на сервер некоторую информацию, что, впрочем, не отменяет последующее получение контента.

action — содержит адрес PHP-скрипта, который должен обработать эту форму.

После нажатия на кнопку «отправить», браузер выполняет POST запрос со введёнными данными на адрес, указанный в атрибуте action.

Обработка формы

После отправки формы управление передаётся PHP-скрипту, который должен получить переданные данные, выполнить с ними какие-либо действия (например, сохранить в базе данных) и показать результат.

Результатом может быть какое-нибудь сообщение об успешном завершении операции, например, «ваши данные успешно отправлены».

Поэтому требуется в первую очередь научиться получать данные из формы в сценарии.

В PHP это делается легко — все данные из формы находятся в глобальном ассоциативном массиве $_POST . Этот массив всегда будет неявно присутствовать в сценарии, если он был загружен по методу POST.

Каждое поле из формы будет находиться в массиве, где ключом будет значение атрибута name, а значением содержимое поля. Например, чтобы вывести из формы всю информацию на экран, можно написать такой сценарий:

Email: " . $_POST['email']); print("
Сообщение: " . $_POST['message']); > ?>

Функция isset служит для определения, существует ли переданная ей переменная. Так мы проверяем, что сценарий загружен методом POST, то есть была отправлена форма.

Как правило, после обработки формы в PHP, сценарий должен переадресовать пользователя на другую страницу. Это связано с тем, что если форма была отправлена через метод POST, то после обновления страницы данные будут отправлены ещё раз, а это, в большинстве случаев, нежелательное поведение.

Отправка файлов

Кроме текстовой информации, существует возможность отправлять на сервер файлы любых типов. Пример формы для загрузки файла:

Тут есть два важных отличия от первого примера:

  • Добавился новый атрибут enctype, который всегда должен иметь значение multipart/form-data . Если его не будет, то файл не отправится.
  • Сам файл загружается при помощи поля с типом file.

В PHP загруженный файл будет доступен в другом специальном массиве — $_FILES .

PHP автоматически сохраняет все загруженные файлы во временную папку на сервере. Но хранить там файлы нельзя, потому что эта директория периодически очищается, и ссылку на такой файл нельзя дать на сайте. Решение здесь только одно — переместить загруженный файл в другую папку. Перемещение файла всегда выполняют сразу после загрузки.

Для начала нужно убедиться, что в рабочей директории проекта существует папка для хранения загруженных файлов. Пусть она называется uploads .

Перемещение загруженного файла

Для перемещения файла нужно знать, где он находится сейчас, и адрес папки, в которую он будет переноситься.

С текущим адресом всё крайне просто — он уже находится в массиве $_FILES . Новый адрес файла, в свою очередь, состоит из пути к папке и имени файла. Так как папка uploads находится там же, где и текущий сценарий, получить путь к ней можно так: dirname(__FILE__ )`.

Код для перемещения файла в новую папку:

Функция move_uploaded_file() выполняет два действия:

  • Проверяет, что файл действительно загружен через форму.
  • Перемещает загруженный файл по новому адресу.

Валидация формы

Валидация формы — это проверка содержимого её полей. Задача такой проверки — убедиться, что необходимые поля заполнены, а значения в них соответствуют ожидаемому формату.

Так, например, при регистрации пользователя на сайте, он должен заполнить поля с адресом электронной почты и придумать себе пароль. Оба поля обязательны к заполнению, но значение из поля email также должно быть корректным email-адресом.

Помимо текстовых значений формы, можно проверять формат и размер загружаемых файлов.

Общий подход к валидации

При выполнения валидации любой формы порядок действий будет всегда одним:

  • Сформировать массив с именами полей, обязательных к заполнению.
  • Сформировать массив с правилами для валидации формата полей.
  • Получить значения всех полей.

Дополнительные материалы:

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

Источник

Читайте также:  Создать сложную таблицу html
Оцените статью