Обработка HTML формы
PHP обработка формы
Обработка HTML формы с помощью PHP
или как отправить сообщение на e-mail посредством HTML формы
Вы имеете свой собственный web-сайт и хотите получать от своих пользователей письма или сообщения, вопросы, советы или просто пожелания по электронной почте, тогда этот урок для вас!
Как отправить сообщение по e-mail
Нам нужны следующие файлы:
- form.html – страница с формой.
- 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 = "[email protected]"; /* Проверяем заполнены ли обязательные поля ввода, используя 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