Всем привет! Сегодня я хочу рассказать, как я делал форму онлайн заявок по вызову почтового курьера. Работаю я на почте инженером-программистом. Вот и передо мной начальник поставил задачу сделать такую форму, чтобы заявки приходили на электронный адрес нашего участка доставки. Такую форму можно прикрутить к любому сайту, в том числе и WordPress, не нагружая его лишними плагинами.
Проблема заключалась в том, что мы являемся филиалом главного отделения почты, а полный доступ к сайту, естественно мы не имеем: только для добавления и редактирования новостей своего филиала. Сам же сайт нашей организации построен на AstroCMS, с которой я сталкиваюсь первый раз.
Но проблема очень быстро решилась, так при добавлении новости, я увидел пункт – Вставка формы, это то, что мне и нужно было. Попробовал вставить форму, вроде бы красиво получается, вот, что получилось у меня:
Так как, организация, в которой я работаю, занимается почтовыми услугами, то естественно форма для вызова курьера, предназначена для заказа отправки почтового отправления EMS (ускоренная почта). Как и говорил ранее, все заявки поступают на электронный адрес участка доставки. Почтовый сервер у нас построен на основе MicrosoftExchange (возможность получение писем из внешних почтовых серверов открыта).
Значит, вставил форму и сверстал ее очень просто, с помощью таблиц. Код верстки я не буду, конечно же, вставлять, так как создать таблицу на html думаю многие умеют, но если же будут проблему, то естественно помогу. Все форма моя сверстана, размещена, я сижу довольный и продолжаю работать, но не долгая моя радость была: у меня возникли проблемы с размещением обработчика формы (php-скрипт). В принципе у меня был вариант, я этим вариантов и тестировал данную форму, размещал этот скрипт на своем сервере. Но тут я подумал, что, а вдруг уволюсь, а вдруг не будет доступен мой сервер долго или еще какие-то непредвиденные обстоятельства, тогда спрос будет с меня. Почему на своем? Потому что, как я говорил ранее, у меня не было доступа к сайту, чтобы размещать js-скрипты, php-скрипты. Но остановился я пока что на том, чтобы разместить php-скрипт на своем сервере. Задал форме обработчик и написал его. Как сделать отправку на электронный адрес средствами php, считаю, что многие знают. У меня письмо приходило в виде таблице, как и форма заявки, только в текстовом виде. Как отправить на php электронный адрес, смотрите ниже:
<?php$adr=$_POST['adress'];If(isset($adr)){$to='email';$title='Заявка от '.$_POST['FIO'];$message='текст сообщения';$headers="MIME-Version: 1.0\r\n";$headers.="Content-type: text/html; charset=windows-1251\r\n";mail($to,$title,$message,$headers);$URL="страница переадресации";header("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, то знайте, как легко туда вставить форму и обработать ее. Также данную форму можно вставить на любой сайт, в том числе, где установлена CMSWordPress, дабы не ставить лишние плагины, типа контактной формы. Удачи в настройке и до встречи в новых статьях!