Давайте я в коротко расскажу, о чем пойдет речь в этом уроке, я полностью покажу вам весь процесс создания php обработчика формы который будет проверять, обрабатывать введенные данные, а в последствии и отправлять их на необходимый адрес при этом уведомляя вас об этом. Идея я думаю достаточно проста, главное все качественно исполнить.
Собственно, давайте непосредственно к коду, буду так сказать объяснять каждый шаг, стараясь максимально довести до вас суть каждого шага:
echo '<head><link rel="stylesheet" type="text/css" href="style.css"></head>';
Первым делом мы подгружаем таблицу стилей, так как это у нас php файл используем функцию echo.
function clear_str($str)
{
return
trim(strip_tags($str));
}
Так как, формы на сайте частенько используются для всевозможного, спама и даже взлома я создаю простую функцию которая будет убирать всякий ненужный хлам из вводимых форм, для этого я создаю функцию clear_str в которой использую две стандартных функции для обработки данных, а именно trim() убирает пробелы в начале и конце и функция strip_tags убирает тэги из формы. Здесь мы функцию прописываем, а далее будем ее использовать.
$FirstName = clear_str($_POST['FirstName']);
$LastName = clear_str($_POST['LastName']);
$Phone = clear_str($_POST['phone']);
$Email = clear_str($_POST['email']);
$MessageText = clear_str($_POST['MessageText']);
Этот блок выполняет сразу несколько операций, мы объявляем переменную, если брать по первой строке то это $FirstName и присваиваем ей значение которое было передано из формы, а именно имя $_POST[‘FirstName ’], то есть мы извлекаем из глобального массива $_POST имя которое ввели в форму, хотелось бы отметить что глобальный массив должен быть обязательно написан большими буквами иначе работать не будет. Затем то, что мы извлекли обрабатываем функцией о которую накануне прописывали, тем самым зачистив данные от лишнего мусора, мы их спокойно записываем в переменную, и так по всем полям формы.
Теперь пора проверить переменные, помимо всякого мусора, который может быть забит в форму, она так же может быть и пустой, для этого включаем следующую проверку.
if(empty($FirstName)) {
$stop = '<div class="myform_error"><div class=”box”><h1>Вы не ввели Имя</h1></div></div>';
exit($stop);
С помощью оператора if мы проверяем пустая ли переменная и если это так, то мы останавливаем сценарий с помощью exit() и выводим сообщение об ошибке которое мы записываем в переменную $stop. Чтобы не терять вид нашей формы я прописал немного html кода и в ответ так сказать для красоты, и в таблицу стилей добавил новый класс:
.myform_error {
width: 450px;
height: 170px;
border-radius: 20px;
border: 1px solid #3eb5f1;
background: url("error.png") no-repeat right top, rgb(240,249,255); /* Old browsers */
background: url("error.png") no-repeat right top, -moz-linear-gradient(top, rgba(240,249,255,1) 0%, rgba(203,235,255,1) 47%, rgba(161,219,255,1) 100%); /* FF3.6-15 */
background: url("error.png") no-repeat right top, -webkit-linear-gradient(top, rgba(240,249,255,1) 0%,rgba(203,235,255,1) 47%,rgba(161,219,255,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: url("error.png") no-repeat right top, linear-gradient(to bottom, rgba(240,249,255,1) 0%,rgba(203,235,255,1) 47%,rgba(161,219,255,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f0f9ff', endColorstr='#a1dbff',GradientType=0 ); /* IE6-9 */
margin: 0 auto;
}
Отличия от класса myform небольшие в частности строго задал высоту в 170px и изменил рисунок добавив новый error.png, мелочь, но приятно. Так же были добавлены параметры для тега h1 и еще один класс box, созданный для того чтобы наш заголовок не залезал на рисунок.
h1 {
font-size: 1em;
margin:50px 20px 20px 20px;
}
.box {
width: 290px;
}
Из проверок у нас осталось проверить на корректность ввод электронной почты.
if(!preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $Email))
{
$stop = '<div class="myform_error"><div class="box"><h1>Вы ввели некорректный email</h1></div></div>';
exit($stop);
}
Здесь происходит проверка по шаблону опять-таки с помощью оператора if , используя стандартный шаблон для проверки корректности e-mail адреса, если вам интересно узнать подробнее об этом шаблоне изучайте регулярные выражения.
$to = "xxxxxxxx@mail.ru";
$message = "Здравствуйте меня зовут: $FirstName $LastName
Мой номер телефона: $Phone
Адрес электронной почты: $Email
У меня вопрос:
$MessageText";
Теперь осталось сформировать две переменные в переменную $to мы пишем адрес куда будет отправлено письмо, а в переменную $message мы вводим уже обработанные переменные с данными из формы и формируем письмо так как вам удобно. Вот в принципе и все осталось лишь отправить все:
if(mail($to,"Сообщение с вашего сайта",$message))
{
echo '<div class="myform"><div class="box"><h1>Вы удачно отправили сообщение!</h1></div></div>';
}
else {
echo '<div class="myform_error"><div class="box"><h1>Увы ваше сообщение не отправлено...</h1><div></div>';
}
И опять таки и здесь не обошлись без помощи оператора if в данном случае он нам сообщит если функция mail() отработала то выдаст положительный результат если же возникли ошибки то опять таки он вам об этом скажет. Сама же функция для отправки сообщения mail () имеет достаточно простую структуру, через запятую первое пишем куда отправить, затем Тему письма и собственно само сообщение.
Данная структура является достаточно простой, но при этом эффективной и её использование значительно упростит вам жизнь, при этом я надеюсь вы сами прочувствовали каждый момент и с легкостью сможете создать свой обработчик для каких вам необходимо форм. На этом все я искренне надеюсь, что вы разобрались как сделать php форму для сайта и она вам пригодилась.
JavaScript - самый востребованный язык программирования в мире