Всем привет! Сегодня я хочу рассказать, как я делал форму онлайн заявок по вызову почтового курьера. Работаю я на почте инженером-программистом. Вот и передо мной начальник поставил задачу сделать такую форму, чтобы заявки приходили на электронный адрес нашего участка доставки. Такую форму можно прикрутить к любому сайту, в том числе и WordPress, не нагружая его лишними плагинами.
Проблема заключалась в том, что мы являемся филиалом главного отделения почты, а полный доступ к сайту, естественно мы не имеем: только для добавления и редактирования новостей своего филиала. Сам же сайт нашей организации построен на AstroCMS, с которой я сталкиваюсь первый раз.
Но проблема очень быстро решилась, так при добавлении новости, я увидел пункт – Вставка формы, это то, что мне и нужно было. Попробовал вставить форму, вроде бы красиво получается, вот, что получилось у меня:
Так как, организация, в которой я работаю, занимается почтовыми услугами, то естественно форма для вызова курьера, предназначена для заказа отправки почтового отправления EMS (ускоренная почта). Как и говорил ранее, все заявки поступают на электронный адрес участка доставки. Почтовый сервер у нас построен на основе Microsoft Exchange (возможность получение писем из внешних почтовых серверов открыта).
Значит, вставил форму и сверстал ее очень просто, с помощью таблиц. Код верстки я не буду, конечно же, вставлять, так как создать таблицу на html думаю многие умеют, но если же будут проблему, то естественно помогу. Все форма моя сверстана, размещена, я сижу довольный и продолжаю работать, но не долгая моя радость была: у меня возникли проблемы с размещением обработчика формы (php-скрипт). В принципе у меня был вариант, я этим вариантов и тестировал данную форму, размещал этот скрипт на своем сервере. Но тут я подумал, что, а вдруг уволюсь, а вдруг не будет доступен мой сервер долго или еще какие-то непредвиденные обстоятельства, тогда спрос будет с меня. Почему на своем? Потому что, как я говорил ранее, у меня не было доступа к сайту, чтобы размещать js-скрипты, php-скрипты. Но остановился я пока что на том, чтобы разместить php-скрипт на своем сервере. Задал форме обработчик и написал его. Как сделать отправку на электронный адрес средствами php, считаю, что многие знают. У меня письмо приходило в виде таблице, как и форма заявки, только в текстовом виде. Как отправить на php электронный адрес, смотрите ниже:
<?php
$adr=$_POST['adress'];
If (($adr))
{
$to='email';
$title = 'Заявка от ' .$_POST['FIO'];
$message = 'текст сообщения';
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=windows-1251\r\n";
($to,$title,$message,$headers);
$URL="страница переадресации";
("Location: $URL");
?>Для начала я проверяю, существует ли поле адресата (не пустое ли оно), если пустое, то зачем отправлять заявку (только засорять электронный адрес). Что касается того, почему я не проверяю на наличие переменной $_POST[‘FIO’], да потому что это я делаю с помощью js-скриптов на странице заявки, с этим у меня тоже были проблемы, дальше расскажу. В переменной $message я формирую свою заявку, таблично ее верстаю и в нужные ячейки вставляю переменные, форма получается такой же, как и форма заявки, только в текстовом варианте.
Теперь, что касается того, как не отправлять заявку, если пользователь не все обязательные поля ввел (с помощью js-скриптов). Тут у меня тоже возникла проблема, так как я не мог подключить js-скрипт вообще и написать какую-нибудь функцию обработки, AstroCMS это просто после сохранения все убирало.
Тогда я на событие onSubmit формы написал такой код (кривой конечно, но что поделать, по-другому он просто его игнорировал, не все воспринимал):
if ((form1.FIO.value=='') || (form1.phone.value=='') || (form1.punct.value=='') || (form1.ves.value=='') || (form1.ulica.value=='')) {window.alert('Заполните все обязательные поля');return false};
if ((form1.checkbox1.value=='Да') && (form1.email.value=='')){window.alert('Заполните поле Email');return false;exit()};
if ((form1.FIO.value!='') && (form1.phone.value!='') && (form1.punct.value!='') && (form1.ves.value!='') && (form1.ulica.value!='')) {window.alert('Ваша заявка отправится на рассмотрение');return true};Это я писал на onSubmit=”здесь вышеуказанный код”
Вроде бы кое-как работало, то есть не все поля заполнены, выдавалось сообщение, и форма не отправляла данные на обработку php-скрипта.
Дальше я начал крутить с темой, по поводу того, чтобы php-скрипт обработки формы был не на моем сервере. Для этого я зашел в AstroCMS под своей учетной записи, выбрал пункт Загрузку-Файлы, дальше в списке выбрал свой филиал и в него загрузил php-обработчик, попробовал отправить заявку и все сработало, даже с нашего сайта письма приходили намного быстрее, что очень радовало и очень важно.
Так что если у Вас нет полного доступа к сайту, который управляется с помощью AstroCMS, то знайте, как легко туда вставить форму и обработать ее. Также данную форму можно вставить на любой сайт, в том числе, где установлена CMS WordPress, дабы не ставить лишние плагины, типа контактной формы. Удачи в настройке и до встречи в новых статьях!
Также советуем почитать на PressDev.RU
Короткая ссылка: http://pressdev.ru/?p=239





