Простая форма обратной связи на PHP
В этой статье рассматривается создание простой формы обратной связи с проверкой на заполнение полей средствами PHP.
1. HTML — разметка формы
Тут следует обратить внимание на атрибут name тега input. Именно по нему PHP обработчик идентифицирует инпуты.
В атрибуте action тега form указываем путь к обработчику:
1 2 3 4 5 6 7 8 9 |
<form method="post" action="sendmail.php"> <label for="name">Имя:</label> <input type="text" name="name" /> <label for="mail">E-mail:</label> <input type="text" name="mail" /> <label for="message">Сообщение:</label> <textarea name="message"></textarea> <input type="submit" value="Отправить" /> </form> |
2. CSS-стили
1 2 3 4 5 6 7 8 9 10 11 12 13 |
form{ background: powderblue; border: 1px solid; display: block; margin: 0 auto; padding: 14px; width: 183px; text-align:center; } input, textarea{ margin-bottom: 10px } |
Должно получиться:
3. Обработчик формы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php if(!empty($_POST['name']) and !empty($_POST['mail']) and !empty($_POST['message'])){ $name = trim(strip_tags($_POST['name'])); $mail = trim(strip_tags($_POST['mail'])); $message = trim(strip_tags($_POST['message'])); mail('ваша почта', 'Письмо с адрес_вашего_сайта', 'Вам написал: '.$name.'<br />Его почта: '.$mail.'<br /> Его сообщение: '.$message,"Content-type:text/html;charset=windows-1251"); echo "Ваше сообщение успешно отправлено!<Br> Вы получите ответ в ближайшее время"; exit; } else { echo "Для отправки сообщения заполните все поля!; exit; } ?> |
Здесь идет проверка формы на знаполненность полей:
1 2 3 4 5 6 7 |
if(!empty($_POST['name']) and !empty($_POST['mail']) and !empty($_POST['message'])){ } else { echo "Для отправки сообщения заполните все поля!"; exit; } |
Если все поля заполнены, то скрипт начнет обрабатывать данные, если же хоть одно поле не было заполнено, то на экран выведется сообщение «Для отправки сообщения заполните все поля!» .
Функции trim() и strip_tags() очистищают введенные пользователем данные от html тегов и лишних пробелов:
1 2 3 |
$name = trim(strip_tags($_POST['name'])); $mail = trim(strip_tags($_POST['mail'])); $message = trim(strip_tags($_POST['message'])); |
Функция mail() отправляет почту:
1 2 3 |
mail('ваша почта', 'Письмо с адрес_вашего_сайта', 'Вам написал: '.$name.'<br />Его почта: '.$mail.'<br /> Его сообщение: '.$message,"Content-type:text/html;charset=windows-1251"); |
Тут следует обратить внимание что кодировка в хедере, сообщении и в целом кодировка документа должны совпадать иначе весь текст преобразуется в «крокозябры».