Улучшаем обработчик формы обратной связи
Обновленный обработчик формы обратной связи >>>
Как-то я уже писал о том, как создать форму обратной связи на РНР. Ознакомиться со статьей можно здесь.
Сегодня я решил показать как ее можно усовершенствовать. А именно: добавить проверку на заполнение всех полей и правильность ввода email-адреса.
Мы будет изменять код самого обработчика send.php, который мы создали раньше. И выглядеть он должен следующим образом:
<?php if (isset($_POST['name'])) { $name = $_POST['name']; if ($name == '') unset($name); } if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') unset($email); } if (isset($_POST['message'])) { $message = $_POST['message']; if ($message == '') unset($message); } /* Проверяем заполнены ли все поля */ if (isset($name) && isset($email) && isset($message)) { /* Убираем все лишние пробелы и переносы строк, а также преобразуем все теги HTML в символы*/ $name = htmlspecialchars(trim($name)); $email = htmlspecialchars(trim($email)); $message = htmlspecialchars(trim($message)); /* Проверяем правильность ввода email-адреса */ if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)){ echo "Неправильный формат e-mail адреса!"; } else{ /* Формируем сообщение */ $address = "email@example.ru"; $sub = "Сообщение с моего нового сайта!!!"; $mes = "Автор назвался: $name \nОставил такой E-mail: $email \nСодержание письма: \n$message"; /* Отправка сообщения */ $verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email"); if ($verify == 'true'){ echo "Сообщение отправлено!"; } else { echo "Сообщение не отправлено!"; } } } else{ echo "Вы заполнили не все поля!"; } ?>
Хотелось бы добавить пару комментариев по проделанной работе.
Итак, в этой обработчике мы задействовали несколько новых функций:
isset() – проверяет существует ли переменная. Возвращает TRUE, если переменная существует; иначе FALSE.
preg_match() - выполняет подстановку регулярного выражения. Регулярные выражения это отдельная, довольно таки сложная тема, останавливаться на которой я не буду.
trim() - убираем все лишние пробелы и переносы строк. Думаю здесь все понятно.
htmlspecialchars() - конвертирует специальные символы в мнемоники HTML. Некоторые символы имеют в HTML специальное значение и должны быть представлены мнемониками HTML для сохранения своего значения. Эта функция возвращает строку с выполненной конвертацией. А именно:
- '&' (амперсанд) становится '&'
- '"' (double quote) становится '"' когда ENT_NOQUOTES не установлен
- ''' (single quote) становится ''', только когда установлен ENT_QUOTES.
- '<' (less than) становится '<'
- '>' (greater than) становится '>'
Если что-то не понятно, пишите в комментариях. Будем разбираться!
Также рекомендую посмотреть мой скрипт "Мастер создания форм".
Данный скрипт может создавать 4 типа форм, для Вашего сайта:
- Форма обратной связи;
- Форма для проведения опросов или анкет;
- Форма для голосования на сайт;
- Форма любой сложности.
Чтобы получить демонстрационную версию этого скрипта, заполните форму, которая находится ниже:
Введите свое имя и основной e-mail адрес в форму, после чего нажмите на кнопку подписки. Бесплатная версия скрипта будет выслан на указанный вами адрес в течение нескольких минут.
|
Более детальную информацию о скрипе, читайте на официальном сайте здесь!
-
Комментарии (42)
- Сайт