За последние 24 часа нас посетили 22699 программистов и 1260 роботов. Сейчас ищут 762 программиста ...

Прошу помощи с отправкой данных из формы на почту

Тема в разделе "Сделайте за меня", создана пользователем Taoffy, 28 фев 2019.

Метки:
  1. Taoffy

    Taoffy Новичок

    С нами с:
    28 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, есть лендинг на reg.ru, в нем две формы, данные из которых должны отправляться на почту(без перезагрузки страницы через ajax). Я в бэкенде не силен, искал различные скрипты, пытался писать что-то сам, но безрезультатно, насколько я понимаю обработчик их получает, но сообщение не отправляется.
    HTML-код одной из форм:
    <form class="popup-container__question__form" method="POST">
    <p class="popup-container__question__form__text">Задавайте интересующие вас вопросы и я отвечу на них как можно скорее.</p>
    <input type="text" name="name2" maxlength="30" placeholder="Ваше имя" class="popup-container__form__name">
    <input type="email" name="email" maxlength="40" placeholder="email-адрес" class="popup-container__question__form__email">
    <textarea name="question" class="popup-container__question__form__textarea"></textarea>
    <button type="submit" name="questionButton" class="popup-container__question__form__button">Отправить</button>
    </form>

    JS:
    $('.popup-container__question__form').submit(function(event) {
    event.preventDefault();
    $.ajax({
    type: "POST",
    url: "mail.php",
    data: $(this).serialize()
    }).done(function() {
    $('.popup-container__question__form').find('input').val('');
    $('.popup-container, .popup-container__question').fadeOut(50);
    alert("Сообщение успешно отправлено");
    $('.popup-container__question__form').trigger('reset');
    });
    return false;
    });

    PHP:
    <?php

    $name1 = $_POST['name1'];
    $name2 = $_POST['name2'];
    $phone = $_POST['phone'];
    $mail = $_POST['email'];
    $qestion = $_POST['question'];

    $callbackButton = $_POST['callbackButton'];
    $qestionButton = $_POST['questionButton'];

    if(isset($qestionButton))
    {
    $header = 'From: andrewebdev.ru';

    $theme = 'Сообщение от клиента';

    $letter = 'Пользователь ' . $name2 . ' , email-адрес: ' . $mail . ', оставил сообщение-' . $qestion;

    mail("Моя почта", $theme, $letter, $header)
    }
    ?>
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    убери это условие и посмотри отправится ли if(isset($qestionButton))
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Taoffy, типичная картина для фронтэндщика: заглушка для отправки писем – полная фигня. Обратитесь уже к знакомому бэкэндщику, а то на форумах такого насоветуют...

    Наличие POST-параметров не проверяется, значения $header и $theme – фигня.
     
  4. Taoffy

    Taoffy Новичок

    С нами с:
    28 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    В том-то и дело, что его нету, а отдавать на биржу не хочется.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Вы не то проверяете. Проверяйте наличие реально необходимых параметров без их переливания в переменные (по крайней мере до проверки) – см. isset. Что касается заголовков, включая Subject, см. мою статью Как сделать отправку письма? Контент можно не кодировать, если вся используемая цепочка передачи позволяет, но тогда нужно указать способ кодирования 8bit.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    JS
    Код (Javascript):
    1. $( 'body' ).on( 'submit', 'form.AJAX', function( e )
    2.     {
    3.         e.preventDefault();
    4.        
    5.         var formData = new FormData( $( this ).get(0) );
    6.        
    7.         $( 'title' ).html( 'Результат' );
    8.        
    9.         $.ajax(
    10.         {
    11.             url: $( this ).attr( 'action' ),
    12.             type: $( this ).attr( 'method' ),
    13.             contentType: false, // важно - убираем форматирование данных по умолчанию
    14.             processData: false, // важно - убираем преобразование строк по умолчанию
    15.             data: formData,
    16.             dataType: 'HTML',
    17.             success: function( h )
    18.             {
    19.                 $( '#BLOCK1' ).html( h );
    20.             }
    21.         });
    22. });

    html
    обычная форма - метод, направление - все есть.
    HTML:
    1. <form action = "/inc/create.php" method = "POST" class = "AJAX">
    2.     <p>
    3.         <input type="url" name="url" placeholder="Ссылка на изображение" />
    4.     </p>
    5.     <p>
    6.         <input type="text" name="phone" placeholder="Номер моб. телефона" />
    7.     </p>
    8.     <p>
    9.         <input type="submit" value="submit" />
    10.     </p>
    11. </form>

    валидация:

    https://php.net/manual/ru/function.filter-input-array.php

    есть смысл тратить время на распинания кода ?
    --- Добавлено ---
    захожу и вижу фигу