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

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

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

или как отправить сообщение на e-mail посредством HTML формы

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

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

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

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

Рассмотрим код form.html:

<title>Обработка HTML формы с помощью PHP</title>
</head>
<body>
<form action="form_processing.php" method="post">
<p>Ваше имя:<br /><input type="text" name="your_name" /></p>
<p>E-mail:<br /><input type="text" name="email" /></p>
<p>Тема:<br /><input type="text" name="tema" /></p>
<p>Сообщение:<br />
<textarea name="message" rows="5" cols="45"> </textarea></p>
<p><input type="submit" value="Отправить"></p>
</form>
</body>
</html>

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:

<?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("<br /> Е-mail адрес не существует");
}
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail "Здравствуйте! 
Вашей контактной формой было отправлено сообщение! 
Имя отправителя: $your_name 
E-mail: $email 
Текст сообщения: $message 
Конец"
;
/* Отправляем сообщение, используя mail() функцию */
$from  "From: $yourname <$email> \r\n Reply-To: $email \r\n"
mail($myemail$tema$message_to_myemail$from);
?>
<p>Ваше сообщение было успешно отправлено!</p>
<p>На <a href="index.php">Главную >>></a></p>
<?php
/* Если при заполнении формы были допущены ошибки сработает 
следующий код: */
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)
{
?>
<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php echo $myError?>
</body>
</html>
<?php
exit();
}
?>

Участок кода:

<p>Ваше сообщение было успешно отправлено!</p>
<p>На <a href="index.php">Главную >>></a></p>

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

Участок кода:

<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php echo $myError?>
</body>
</html>

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

Значение переменной:

<?php
$from  
"From: $yourname <$email> \r\n Reply-To: $email \r\n";
?>

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

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

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

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

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

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