За последние 24 часа нас посетили 17687 программистов и 1718 роботов. Сейчас ищет 961 программист ...

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

Тема в разделе "Сделайте за меня", создана пользователем 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.264
    Симпатии:
    405
    убери это условие и посмотри отправится ли if(isset($qestionButton))
     
  3. miketomlin

    miketomlin Старожил

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

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

    Taoffy Новичок

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

    miketomlin Старожил

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

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    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

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