Всем привет! Произошла небольшая заминка с разметкой Schema.org, но все разрешилось успешно. В скором времени подробно опишу ее внедрение. Внесу свою лепту в эту загадочную тему. Загадочную потому, что совсем не просто с наскока взять и внедрить на свой сайт микроразметку. А уж тем более выпилить старую. Но об этом позже, а сегодня расскажу о том, как создавал форму обратной связи на PHP.
Сразу после внедрения в проект теста на знание языка, мне понадобилось добавить возможность потенциальным клиентам оставить заявку на запись в группу, как говорится, не вставая с дивана. Заявка должна быть заполнена в специальной форме и приходить по почте прямо в офис. После чего с клиентом созваниваются и уточняют детали.
Прогуглил, нашел функцию mail, обрадовался, что все велосипеды уже давно написаны. Значит можно просто собрать форму и отправить ее на электронный адрес, отлично.
Для начала глянем на саму функцию отправки письма, я уверен, что она еще много раз мне пригодится. Будет полезно сохранить ее синтаксис и описание.
Функция mail в PHP
Прототип функции mail:
bool mail ( string $to
, string $subject
, string $message
[, string $additional_headers
[, string $additional_parameters
]] )
Аргументы:
$to — получатель письма. Если несколько, то указываются через запятую. Например: user1@example.com, user2@example.com;
$subject — тема отправляемого письма;
$message — отправляемое сообщение. Каждая строка не должна превышать 70 символов и должна заканчиваться на ‘\r\n’;
$additional_headers(необязательный) — дополнительные заголовки. В них может содержаться, например, кодировка письма и адрес отправителя;
$additional_parameters(необязательный) — дополнительные параметры. Например, дополнительные флаги в виде аргументов командной строки. Небезопасная штука, не рекомендуется ее использовать.
Возвращаемое значение:
True если письмо отправлено и False если нет.
html форма обратной связи
С функцией все понятно, последний параметр не понадобится, ну и слава богу. Самое время строить форму. Она будет состоять из следующих полей:
— ФИО;
— E-mail;
— Контактный телефон;
— Язык;
— Цель изучения;
— Текущий уровень владения;
— Как хочется изучать язык — в группе или индивидуально;
— Сопроводительное письмо(необязательно).
Форма будет отображаться только при условии, что она еще не была заполнена. Перед отправкой письма нужно проверить, что все поля, кроме сопроводительного письма, заполнены. И чтобы не было желания сразу подать еще одну заявочку «для верности», мы прячем поля формы с глаз долой при помощи флага $sendFlag.
Правильность заполнения полей лежит на совести самих клиентов. Минус — мы не застрахованы от левых фамилий и номеров. Плюс — мы не ставим клиента в жесткие рамки, тем самым отпугивая его. Не хочет писать отчество, бог с ним, главное чтобы телефон был правильный.
Исходный код обратной формы на html+php
<?php if(isset($_POST['fio']) and isset($_POST['email']) and isset($_POST['phone']) and isset($_POST['lang']) and isset($_POST['target']) and isset($_POST['level']) and isset($_POST['learnType'])) { $sendFlag = true; } else { $sendFlag = false; } ?> <?php if($sendFlag == true) { ?> <p>Ваша заявка отправлена, мы ознакомимся с ней в скором времени и перезвоним вам, спасибо!</p> <?php } else { ?> <p>Заполните, пожалуйста, форму обратной связи как можно подробнее. После того, как вы подадите заявку, мы вам позвоним на контактный телефон и уточним детали, спасибо!</p> <p>Обязательные поля помечены звездочкой</p> <form method="post"> <b>ФИО*</b> <input type="text" name="fio"> <b>E-mail*</b> <input type="text" name="email"> <b>Контактный телефон*</b> <input type="text" name="phone"> <b>Язык, который вы хотите изучить*</b> <input type="text" name="lang"> <b>Цель изучения*</b> <input type="text" name="target"> <b>Текущий уровень владения языком*</b> <input type="text" name="level"> <b>Хочу изучать язык*</b> <input type="radio" name="learnType" value="group">В группе <input type="radio" name="learnType" value="solo">Индивидуально <b>Сопроводительное письмо(необязательно)</b> <textarea name="pismo" cols="25" rows="8"></textarea> <input type='input' name='sendLetter' value='Отправить заявку' /> </form> <?php }//endif if((isset($_POST['fio']) and $_POST['fio']!="") and (isset($_POST['email']) and $_POST['email']!="") and (isset($_POST['phone']) and $_POST['phone']!="") and (isset($_POST['lang']) and $_POST['lang']!="") and (isset($_POST['target']) and $_POST['target']!="") and (isset($_POST['level']) and $_POST['level']!="") and (isset($_POST['learnType']))) { $to = 'apply@legolang.ru'; //Почта получателя $subject = 'Заявка на запись в группу'; //Заголовок сообщения //Получаем значение с радиокнопки $type = 'не указано'; if($_POST['learnType'] == 'group') { $type = 'В группе'; } else { $type = 'Индивидуально'; } //Формируем письмо с использованием html тегов $message = ' <html> <head> <title>'.$subject.'</title> </head> <body> <p>ФИО: '.$_POST['fio'].'</p> <p>E-mail: '.$_POST['email'].'</p> <p>Телефон: '.$_POST['phone'].'</p> <p>Язык: '.$_POST['lang'].'</p> <p>Цель: '.$_POST['target'].'</p> <p>Уровень владения: '.$_POST['level'].'</p> <p>Как изучать: '.$type.'</p> <p>Сопроводительное письмо: '.$_POST['pismo'].'</p> </body> </html>'; //Формируем доп. заголовки: $headers = "Content-type: text/html; charset=utf-8 \r\n"; //Кодировка письма $headers .= "From: Отправитель <apply@legolang.ru>\r\n"; //Наименование и почта отправителя //отправляем письмо mail($to, $subject, $message, $headers); } ?>
Заключение
Форма готова, письма отправляются, клиенты записываются, начальник радуется интернет-технологиям будущего. Я готов приступать к работе над другими задачами. Кстати, перестановочный шифр мне поддался и совсем скоро я опишу его взлом. Кроме того, у меня появилась самая настоящая карта сокровищ. Заходите, там все структурировано и очень удобно! На этом на сегодня все, спасибо за внимание!