Задать вопрос

Отправка заявок с формы на почту?

Доброго времени суток .
Подскажите на странице есть несколько форм обратной связи. Одна форма имеет поля Имя и Телефон.
Другая форма имеет поля Имя, Телефон, Email.
Для отправки данный я использую свой обработчик. Назвал его mail.php
в форме прописываю путь до него
<form id="quiz-top" action="mail.php" class="quiz-form" method="POST">
                    <input type="text" name="user" />
                    <input type="tel" name="phone" />
                    <input type="submit"  value="Отправить">
</form>


В обработчике mail.php прописываю следующее:
$arr = array(
    'Имя клиента: ' => $name,
    'Телефон: ' => $phone,
);



$formSubject = $_POST['form_subject'];

$mail = new PHPMailer\PHPMailer\PHPMailer();

try{
<?php
    $msg = "ok";
    $mail->SMTPDebug = 0;
    // $mail->isSMTP();
    $mail->CharSet = "UTF-8";
    $mail->SMTPAuth   = true;

    $mail->Host = '';
    $mail->Username = ''; 
    $mail->Password = ''; //пароль от почты через которую отправляем данные
    $mail->SMTPSecure = 'ssl';
    $mail->Port = 465;

    $mail->setFrom();//вводим email через который будем отправлять письма
    $mail->addAddress(); //вводим email на который будут приходить данные

    $mail->isHTML(true);
    $mail->Subject = 'Заявка с сайта <alton.msk.ru>';
    $mail->Body    = '<h2>Заявка с формы - '. $formSubject . '</h2>
					<table style="border-collapse: collapse;">
						<tr>
							<th style="padding: 10px; border: #e9e9e9 1px solid; background-color: #f8f8f8;text-align:left;"><b>Имя</b></th>
							<td style="padding: 10px; border: #e9e9e9 1px solid;">' . $name . '</td>
						</tr>
						<tr>
							<th style="padding: 10px; border: #e9e9e9 1px solid; background-color: #f8f8f8;text-align:left;"><b>Телефон</b></th>
							<td style="padding: 10px; border: #e9e9e9 1px solid;">' . $phone . '</td>
						</tr>
					</table>';

    if ($mail->send()) {
        echo "$msg";
    } else {
        echo "Сообщение не было отправлено. Неверно указаны настройки вашей почты";
    }

} catch (Exception $e) {
    echo "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}

?>


в js прописываю так:
$("#quiz-top").submit(function () {
    const form = $(this);
    $.ajax({
        type: "POST",
        url: "mail.php",
        data: form.serialize()
    });
    return false;
});


Вопрос вот в чем. Как мне сделать в обработчике проверку, что если например в форме нет параметра email то отправляем без него, а если заполнен параметр email то его отправляем тоже. А то сейчас мне приходится для каждой формы создавать свой отдельный обработчик. mail.php, mail2.php и т.д
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
irishmann
@irishmann
Научись пользоваться дебаггером
В начале задай переменную с mail. Потом в $mail->Body проверяй есть ли она, если есть вставить дополнительные строки, иначе ничего.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽