@dotan90

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

Есть форма оформления заказа, в которой имеются 5 checkbox как можно сделать чтоб форма отправляла содержимое на почту? PHP я сформировал но вот как внести в message?
вот HTML code.
<form  id="order_form" method="POST">
                <input type="hidden" name="formData" value="Оформление заказа">
                <div class="col-md-6 col-sm-12 forms-wrap">
                    <div class="personal-data">
                        <div class="section__title">Личные данные</div>
                        <fieldset class="fieldset">
                            <input type="text" required="required" data-msg-required="Это поле необходимо заполнить"
                                name="user_name" placeholder="Ваше имя" value="" class="input required">
                        </fieldset>
                        <fieldset class="fieldset">
                            <input type="tel" required="required"
                                data-msg-vekaphonecustomUa="Пожалуйста, введите корректный телефон"
                                data-msg-phonecustom="Пожалуйста, введите корректный телефон"
                                data-msg-required="Это поле необходимо заполнить" name="user_phone"
                                data-mask="+7 (999) 999-99-99" placeholder="Номер телефона" value=""
                                class="input js-phone required">
                        </fieldset>
                        <fieldset class="fieldset">
                            <input type="email" data-msg-email="Введите корректный email" name="user_email"
                                placeholder="E-mail" value="" class="input">
                        </fieldset>
                        <fieldset class="fieldset">
                            <textarea name="user_message" placeholder="Ваш комментарий" class="input"></textarea>
                        </fieldset>
                    </div>
                </div>
                <div class="col-md-6 col-sm-12 forms-wrap">
                    <div class="additional-options">
                        <div class="section__title">Дополнительные опции</div>
                        <fieldset class="fieldset">
                            <select data-placeholder="Тип вашего дома" name="type_house" class="select js-select">
                                <option selected value="">не выбран</option>
                                <option value="1">Панельный</option>
                                <option value="2">Кирпичный</option>
                                <option value="3">Деревянный</option>
                            </select>
                        </fieldset>
                        <fieldset class="fieldset checkbox-wrap">
                            <label class="checkbox">
                                <input type="checkbox" id="ch1" name="options[]" value="Подоконник" checked-true><span
                                    class="checkbox__text">Подоконник</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch2" name="options[]" value="Отливы" checked-true
                                    class="checkbox"><span class="checkbox__text">Отливы</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch3" name="options[]" value="Откосы" class="checkbox"><span
                                    class="checkbox__text">Откосы</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch4" name="options[]" value="Москитная сетка"
                                    class="checkbox"><span class="checkbox__text">Москитная сетка</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch5" name="options[]" value="Монтаж" checked-true
                                    class="checkbox"><span class="checkbox__text">Монтаж</span>
                            </label>
                        </fieldset>
                    </div>
                    <div class="ordering-forms__checkbox">
                        <fieldset class="fieldset">
                            <label class="checkbox">
                                <input type="checkbox" name="user_agreement" data-rule-required="true"
                                    data-msg-required="Пожалуйста, подтвердите согласие на обработку персональных данных"
                                    required="required">
                                <span class="checkbox__text">Ознакомлен с <a href="reglament.html"
                                        target="_blank">Регламентом о защите персональных данных</a> и выражаю <a
                                        href="agreement.html" target="_blank">согласие</a> на их обработку</span>
                            </label>
                        </fieldset>
                    </div>
                </div>
            </form>

Вот JavaScript:
$(document).ready(function () {
            $('form').submit(function () {
                var formID = $(this).attr('id'); // Получение ID формы
                var formNm = $('#' + formID);
                $.ajax({
                    type: 'POST',
                    url: 'order_form.php', // Обработчик формы отправки
                    data: formNm.serialize(),
                    success: function (data) {
                        // Вывод текста результата отправки в текущей форме
                        $(formNm).html(data);
                    }
                });
                return false;
            });
        });

А вот PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
    if (isset($_POST['user_name'])) {$user_name = $_POST['user_name'];}
    if (isset($_POST['user_phone'])) {$user_phone = $_POST['user_phone'];}
    if (isset($_POST['user_email'])) {$user_email = $_POST['user_email'];}
    if (isset($_POST['user_message'])) {$user_message = $_POST['user_message'];}
    if(!isset($_POST['type_hause'])){$type_hause = $_POST['type_hause'];}
    if(empty('options')){echo("не выбрано ни одного значения");echo'<br>';}
    else{
        $N = count($options);
        for($i=0;$i<$N;$i++)
        {
            echo('- '.$options[$i]."");echo '<br>';
        }
    }
    if (isset($_POST['user_agreement'])) {$AGREEMENT = $_POST['user_agreement'];}

    $to = "rusmus191090@gmail.com"; /*Укажите ваш адрес электронной почты*/
    $headers = "Content-type: text/html; charset = utf-8";
    $subject = "$formData";
    $message = "$formData"."<br>";
    $message.= "Отправитель: $user_name"."<br>";
    $message.= "Телефон: $user_phone"."<br>";
    $message.= "Почта: $user_email"."<br>";
    $message.= "Сообщение: $user_message"."<br>";
    $message.= "Тип дома: $type_hause"."<br>";
    $message.= "Опции: $options"."<br";
    $send = mail ($to, $subject, $message, $headers);
    if ($send == 'true')
    {
    echo '<div class="modal__icon"><img src="images/logo.svg"></div>
    <span>Ваша заявка успешно отправлена!</span>
    <p>Благодарим вас за обращение в компанию VEKA. Наши партнеры свяжутся с вами в течение
        нескольких часов. Если в течение одного рабочего дня вы не получите ответа, пожалуйста,
        напишите в службу поддержки по адресу
        <a href="mailto:okna.tamb@mail.ru"><b>okna.tamb@mail.ru</b></a></p>';
    }
    else 
    {
    echo "<center><b>Ошибка. Сообщение не отправлено! Проверьте правильность введенных данных</b></center>";
    }
} else {
    http_response_code(403);
    echo "Попробуйте еще раз";
}
?>

Уже третий день сижу все думаю думаю ничего не могу придумать. Форма при нажатии на кнопку даже не пытается ничего делать.
  • Вопрос задан
  • 318 просмотров
Пригласить эксперта
Ответы на вопрос 2
@66demon666
Сетевой админ, АТС-админ
Ну отдебажьте отправку, в JS, ловит ли событие, а то меня вот это
$('form').submit(function () {
...

смущает
Ответ написан
@yourbatya
Разрабатываю разработки
$('form[id="order_form"]').on('submit', function() {
    let $row = $(this).closest('form');
    let data = $row.find('input, select, textarea').serialize();
    $.ajax({
        type: "POST",
        url: "order_form.php",
        data: data
    }).done(function() {
        alert("Успешно!");
    });
    return false;
});

Попробуйте так.
Но вам нужно вашу кнопку, которая сабмитит форму, занести внутрь тега , иначе никогда у вас ничего работать не будет.
Кроме того, посмотрите в dev tools (F12) - вкладка Network, какие данные и в каком виде у вас отправляются после изменений.
Затем сам php... Вы его брали откуда-то уже готовый или сами так написали?
Для начала объявляете переменные каждому передаваемому параметру.
if (isset($_POST['formData'])){
$name = strip_tags(trim($_POST['user_name']));
$phone = preg_replace("/[^+0-9]/s", "", strip_tags(trim($_POST['user_phone'])));
...
}

Кроме того, в таком виде, как у вас, на почту будет приходить просто текст "Отправитель: $user_name".
Чтобы внести значение переменной нужно делать так:
$message.= 'Отправитель: ' . $user_name . '<br>
Телефон: ' . $user_phone . '<br>
Почта: ' . $user_email . '<br>
Сообщение: ' . $user_message . '<br>
Тип дома: ' . $type_hause . '<br>"
Опции: ' . $options . '<br>';

Попробуйте так и напишите, что у вас в дев тулс отображается. Но по хорошему бы то, что у вас в php, надо бы переписать с нуля, ибо я сомневаюсь, что там что-то заработает, если вы в этом не разбираетесь.
Посмотрите более простой пример
Ещё косяк нашёл. Когда добавите кнопку внутрь тега форм, пропишите кнопке type="submit", иначе она не будет по нажатию сабмит формы делать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы