Php отправка двух формах

Отправка данных из двух типов форм. Как реализовать PHP обработчик

Имеется необходимость размещения на сайте двух типов форм — «формы заказа в 1 клик» и «расширенной формы».

Форма заказа в 1 клик расположена на всех страницах сайта, кроме страницы «Оформление заказа» — ибо на ней расположена «расширенная форма» заказа.

1 2 3 4 5 6 7 8 9 10 11 12
div id="footerForm"> form action="oneclick.php" method="POST" name="footerForm"> fieldset> legend>Оформить заказ/legend> p>Ваше имя:/p> input id="textfield_1" type="text" name="name" maxlength="40"> p>Ваш телефон:/p> input id="textfield_1" type="text" name="telephon" maxlength="16"> /fieldset> input type="submit" name="oneclick" class="button3" value="Готово"> /form> /div>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
div id="orderForm"> form action="formdata.php" method="POST" name="orderForm"> fieldset>legend>ФИО/legend> p>label>Фамилия* input id="input" type="text" name="family" maxlength="16">/label>/p> p>label>Имя* input id="input" type="text" name="name" maxlength="16">/label>/p> p>label>Отчество* input id="input" type="text" name="otchestvo" maxlength="16">/label>/p> /fieldset> /br> fieldset>legend>Адрес доставки/legend> p>label>Почтовый индекс* input id="input" type="text" name="index" maxlength="6">/label>/p> p>label>Область (край), район* input id="input" type="text" name="region" maxlength="50">/label>/p> p>label>Город* input id="input" type="text" name="sity" maxlength="16">/label>/p> p>label>Адрес (улица, дом, квартира. )* input id="input" type="text" name="adress" maxlength="100">/label>/p> /fieldset> /br> fieldset>legend>Контакты/legend> p>label>Сотовый телефон* input id="input" type="text" name="cellphon" maxlength="16">/label>/p> p>label>Домашний телефон input id="input" type="text" name="telephon" maxlength="16">/label>/p> p>label>e-mail input id="input" type="text" name="email" maxlength="35">/label>/p> /fieldset> /br> fieldset>legend>Тип и Количество/legend> p>Отбеливающая select name="otbel"> option>0/option> option>1/option> option>2/option> option selected>3/option> option>4/option> option>5/option> option>6/option> option>7/option> option>8/option> option>9/option> option>10/option> /select> /p> p>Травяная select name="trav"> option>0/option> option>1/option> option>2/option> option selected>3/option> option>4/option> option>5/option> option>6/option> option>7/option> option>8/option> option>9/option> option>10/option> /select> /p> /fieldset> /br> fieldset> legend>Дополнительная информация/legend> p>textarea name="message" maxlength="1000">Напишите здесь комментарии к заказу, если требуется. /textarea>/p> /fieldset> p>input type="submit" name="sandOrder" class="button3" value="Отправить">/p> /form> /div>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
 if (isset($_POST['sandOrder'])) { // проверяем была ли нажата кнопка ОТПРАВИТЬ // получаем данные из формы и заносим их в массивы // здесь же нужно обработать все данные на предмет длины строки, запрещенных символов и так далее $family=$_POST[family]; $name=$_POST[name]; $otchestvo=$_POST[otchestvo]; $index=$_POST[index]; $region=$_POST[region]; $sity=$_POST[sity]; $adress=$_POST[adress]; $cellphon=$_POST[cellphon]; $telephon=$_POST[telephon]; $email=$_POST[email]; $otbel=$_POST[otbel]; $trav=$_POST[trav]; $message=$_POST[message]; // формируем заголовок и тело письма $headers="Content-type: text/html; charset=utf-8 \r\n"; $headers="From: sait.org \r\n"; $thm="Заказ зубной пасты"; $msg="Фамилия: $family Имя: $name Отчество: $otchestvo Индекс: $index Область: $region Город: $sity Адрес: $adress Сотовый телефон: $cellphon Домашний телефон: $telephon Емайл: $email Отбеливающая: $otbel Травяная: $trav Дополнительно: $message"; $mail_to="gmail@gmail.com"; // почта куда отправлять письмо // Отправляем почтовое сообщение $result = mail($mail_to, $thm, $msg, $headers); if ($result) { echo "

Ваш заказ принят в обработку! В ближайшее время мы Вам перезвоним для уточнения деталей.

"
; } else { echo "

Похоже возникла ошибка, пожалуйста повторите отправку данных!

"
; } } ?>

— Имеем два типа форм, с разным количеством полей (в урезанной форме данные совпадают с двумя полями из расширенной), необходимо отправлять данные из обоих форм (на выбор пользователя) — как это реализовать?

— Что нужно дописать в обработчик, чтобы после вывода сообщения об успешной отправке данных, производился редирект на главную страницу сайта?

Заранее спасибо за уделённое время!

Источник

обработка нескольких форм в php

php

Написать простейшую форму с её последующей обработкой сможет, пожалуй, каждый. Но начинающие php-программисты (а иногда и более опытные) встают в тупик: а что делать, если форм на странице 2 и обрабатываются они одним и тем же скриптом? На самом деле, здесь нет ничего сложного. Достаточно знать один момент: как именно браузер отрабатывает эти ситуации.

Допустим, на странице есть 2 формы. Одна отвечает за регистрацию, другая — за авторизацию. В этом случае не будет ничего удивительного, если обрабатывать их будет один файл. Для однозначного и быстрого (в самом деле, если форм будет ещё больше и их данные пересекаются глупо просматривать ворох параметров и создавать чуть ли не искусственный интеллект, пытаясь определить, что же вообще требуется) Определения того, какая из форм была инициирована пользователем, достаточно соблюсти 2 момента.

Как известно, за отправку формы отвечает элемент input с типом submit. Если данному элементу присвоить имя (name), сможем по этому имени определить, какая же из форм вызвана. Код будет примерно таким:

форма № 1

Введите имя:
форма № 2

Введите имя:

Формы практически полностью идентичны. Отличаются они только именами тегов input. В скрипте form.php остаётся только обработать эти ситуации. Исполняем:

// параметры проверяются только если одна из форм активирована if ( ! empty($_POST)) < if (isset($_POST['submit1'])) < // получение переданного имени if (isset($_POST['login'])) $login = $_POST['login1']; else echo 'введите логин'; >else if (isset($_POST['submit2'])) < // получение переданного имени if (isset($_POST['login'])) $login = $_POST['login2']; else echo 'введите логин'; >else < echo 'ошибка'; >> 

Несмотря на то, что код получения логина одинаков, следует понимать, что в первом случае он поступил из формы № 1, а вот втором — из № 2. При активации формы браузер передаёт элементы только этой самой формы. Другие формы обработаны не будут.

Ну и конечно же, ничего не мешает давать элементам разных форм одинаковые имена. В данном примере вполне можно заменить имена login1 и login2 на login (и в html коде, и в скрипте-обработчике form.php).

Дополнение
Для некоторых тема оказалась не раскрыта. Что же, накидал небольшой php-файлик с примером определения отправляемой формы. Надеюсь, живой пример окажется более нагляден.

Источник

Отправка сообщений на почту с двух форм

Привет всем!
На странице имеются две формы.
Первая предназначена для отправки заказа.
Вторая требуется для отправки отзыва.
Всё отправляется на электронный адрес.

Первая форма работает без проблем. Однако введённые данные не приходят со второй формы.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/*Первая форма*/ form class="zakaz" ENCTYPE="multipart/form-data" action="mail.php" method=post> span>Фамилия Имя Отчество: em>*/em>/span>br> input type="text" name="yourname">/input>br> span class="help">Полностью, без сокращений/span>br> span>Телефон: em>*/em>/span>br> input type="text" name="tel">/input>br> span class="help">Обязательно (нужен для подтверждения заказа)/span>br> span>Почтовый адрес:/span>br> textarea name="soob">/textarea>br> span class="help">Индекс, область, город, улица, дом, квартира/span>br> input type="submit" value="Оформить заказ" class="submitButton" name="submit1">/input> /form> //------------------------------------------------- /*Вторая форма*/ form class="zakaz" ENCTYPE="multipart/form-data" action="mail.php" method=post> span>Фамилия Имя Отчество: em>*/em>/span>br> input type="text" name="yourname">/input>br> span class="help">Полностью, без сокращений/span>br> span>Телефон: em>*/em>/span>br> input type="text" name="tel">/input>br> span class="help">Обязательно (нужен для подтверждения заказа)/span>br> span>Почтовый адрес:/span>br> textarea name="soob">/textarea>br> span class="help">Индекс, область, город, улица, дом, квартира/span>br> input type="submit" value="Оформить заказ" class="submitButton" name="submit1">/input> /form>

Вот реализация php скрипта. происходит проверка, какой Submit нажат, и далее идёт считывание данных по тэгу name.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
 if ( isset($_POST['submit1']) ) { $yourname = $_POST['yourname']; $soob = $_POST['soob']; $tel = $_POST['tel']; $letter="Пользователь: $yourname с телефоном $tel и имеющий почтовый адрес $soob оформил новый заказ."; $headers = "Content-type: text/html; charset=\"utf-8\""; mail ("wutgs@mail.ru", "Новый заказ", "$letter", $headers); } if ( isset($_POST['submit2']) ) { $yourname = $_POST['NameFam']; $soob = $_POST['message']; $tel = $_POST['phone']; $letter="Пользователь ололололо: $yourname с телефоном $tel прислал новое сообщение: $soob "; $headers = "Content-type: text/html; charset=\"utf-8\""; mail ("wutgs@mail.ru", "Новый сообщение от пользователя", "$letter", $headers); } die(" window.location = 'http://havsplint.ru'; alert('Ваше сообщение успешно отправлено. Мы с вами свяжемся!');; "); ?>

Однако, со второй формы никакой информации не приходит. Письмо приходит в таком виде:
«Пользователь: с телефоном прислал новое сообщение:»

Подскажите, что у меня не верно сделано.

Добавлено через 7 часов 4 минуты
Сделал дополнительный файл test.php для второй формы.
Вынес скрипт в этот файл, но проблема осталась
Форма:

form action="test.php" method=post class="forma"> span>Фамилия Имя Отчество*/span> input type="text" name="NameFam">/input> span>Телефон*/span> input type="text" name="phone">/input> span>Ваше сообщение/span> textarea name="message">/textarea> input type="submit" value="ОТПРАВИТЬ" class="submitButtons">/input> /form>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 $Im = $_POST['NameFam']; $mess = $_POST['message']; $tel = $_POST['phone']; $letter="Пользователь: $Im с телефоном $tel  прислал новое сообщение: 
$mess"
; $headers = "Content-type: text/html; charset=\"utf-8\""; mail ("wutgs@mail.ru", "Новое сообщение от пользователя", "$letter", $headers); die(" window.location = 'http://havsplint.ru'; alert('Ваше сообщение успешно отправлено!'); "
); ?>

Источник

Читайте также:  Пример реализации полиморфизма php
Оцените статью