Как-то я уже писал о том, как создать форму обратной связи на РНР. Ознакомиться со статьей можно здесь.
Сегодня я решил показать как ее можно усовершенствовать. А именно: добавить проверку на заполнение всех полей и правильность ввода 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 адреса!
";
}
/* Формируем сообщение */
$address = "admin@biznesguide.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 адрес в форму, после чего нажмите на кнопку подписки. Бесплатная версия скрипта будет выслан на указанный вами адрес в течение нескольких минут.

|
Более детальную информацию о скрипе, читайте на официальном сайте здесь!
Дата: 2009-07-28 00:00:00
Привет. Можете мне помочь сделать форму обратной связи?? Я вставила ваш код формы, но там почему то нет кнопки отправить? то есть поля есть для заполнения а отправить нельзя. Можете дать верный код ?)