gbreadman13
@gbreadman13
Фронтенд-кодер из Красноярска

Как подключить на одной странице к одному phpmailer-файлу две формы?

Здраствуйте!
На лендинге две формы. В одной 4 инпута

<form action="./php/mail.php" method="POST">
  <input type="text" placeholder="Ваше имя" name="user_name">
  <input type="text" placeholder="Номер телефона" name='user_phone'>
  <input type="text" placeholder="Откуда" name="from">
  <input type="text" placeholder="Куда" name="to">
  <input type="submit" value="Отправить заявку">
</form>


Во второй 5 инпутов

<form action="./php/mail.php" method="POST">
  <input type="text" placeholder="Ваше имя" name='user_name'>
  <input type="text" placeholder="Номер телефона" name='user_phone'>
  <input type="text" placeholder="Ваш автомобиль" name="user_car">
  <input type="text" placeholder="Откуда" name="from">
  <input type="text" placeholder="Куда" name="to">
  <input type="submit" value="Отправить заявку*">
</form>


Вторую форму настроил через phpmailer на почту. Все работает.
Но первая форма - это, по сути, укороченный вариант второй. Можно ли как-то "малой кровью" к тому же php подключить и ее?

require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';

$name = $_POST['user_name'];
$phone = $_POST['user_phone'];
$car = $_POST['user_car'];
$from = $_POST['from'];
$to = $_POST['to'];

***данные почты***

$mail->Subject = 'Заявка с сайта';
$mail->Body    = '' .$name . ' хочет перегнать машину ' .$car. '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;
$mail->AltBody = '';

if(!$mail->send()) {
    echo 'Erro';
} else {
    header('location: thank-you.html');
}
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Можно. Самое главное, мы не подключаем php-скрипт, а отправляем данные этих форм на обработку этим php-скриптом. Так проще прийти к пониманию, как оно работает.
Чтобы php-скрипт мог воспринимать данные первой формы, он должен уметь пренебрегать наличием параметра user_car.
А делается это таким образом:
строчка:
$car = $_POST['user_car'];
исправляется на:
$car = array_key_exists('user_car', $_POST) ? $_POST['user_car'] : null;

и другая строчка:
$mail->Body    = '' .$name . ' хочет перегнать машину ' .$car. '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;

исправляется на:
$mail->Body    = $name . ' хочет перегнать '.(is_null($car) ? 'неуточненную машину' : 'машину ' .$car). '  из ' .$from. ' в ' .$to. '. <br> Вот его номер телефона ' .$phone;

PS:
Чтобы вам не прислали js-инъекцию на почту, все принимаемые параметры, из которых формируется текст письма, следует экранировать.
$name = htmlspecialchars($_POST['user_name']);
$phone = htmlspecialchars($_POST['user_phone']);
$car = array_key_exists('user_car', $_POST) ?  htmlspecialchars($_POST['user_car']) : null;
$from = htmlspecialchars($_POST['from']);
$to = htmlspecialchars($_POST['to']);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы