За последние 24 часа нас посетили 22935 программистов и 1236 роботов. Сейчас ищут 747 программистов ...

Помогите заполнить форму обратной связи phph

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

  1. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    Здравствуйте! Сразу скажу, что phpи js для меня темный лес. знаю только html и то на уровне новичка. Нашла форму, не украла)) и попыталась установить. письма приходят на почту, но пустые, только адрес отправителя и адрес страницы, с которой форма отправлена. Есть подозрение, что какие-то данные не заполнены. Может кто поможет?

    HTML:
    1. <div id="mail">  
    2.         <div class="box">
    3.                 <form id="ajax-contact-form" enctype="multipart/form-data" method="post">
    4.                   <div class="form-group">
    5.                     <label for="nameFF">Имя:</label>
    6.                     <input id="nameFF" name="nameFF" autocomplete="name" type="text" required>
    7.                   </div>
    8.                   <div class="form-group">
    9.                     <label for="contactFF">E-mail:</label>
    10.                     <input id="contactFF" name="contactFF" autocomplete="email" type="email" required>
    11.                   </div>
    12.                   <div class="form-group">
    13.                     <label for="telFF">Телефон:</label>
    14.                     <input id="telFF" name="telFF" type="tel" autocomplete="tel" required>
    15.                   </div>
    16.                   <div class="form-group">
    17.                     <label for="projectFF">Сообщение</label>
    18.                     <textarea id="projectFF" name="projectFF" cols="40" rows="3"></textarea>
    19.                   </div>
    20.                   <div class="control-file">
    21.                     <label for="fileFF">Прикрепить файл:</label>
    22.                     <input id="fileFF" name="fileFF" type="file">
    23.                   </div>
    24.                   <button class="btn" type="submit" id="submitFF">Отправить сообщение</button>
    25.                 </form>
    26.      
    27.    
    28.                <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    29.                <script src="js/script.js"></script>
    30.         </div>
    31.  
    32.     </div>
    PHP:
    1. <?php
    2. if (isset ($_POST['contactFF'])) {
    3.   $to = "nadin@mail.ru";
    4.   $from = "nadinadin@mail.ru";
    5.   $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
    6.   $message = "Имя пользователя: ".$_POST['nameFF']."\nEmail пользователя ".$_POST['contactFF']."\nТелефон пользователя ".$_POST['telFF']."\nСообщение: ".$_POST['projectFF']."\n\nАдрес сайта: ".$_SERVER['HTTP_REFERER'];
    7.   $boundary = md5(date('r', time()));
    8.   $filesize = '';
    9.   $headers = "MIME-Version: 1.0\r\n";
    10.   $headers .= "From: " . $from . "\r\n";
    11.   $headers .= "Reply-To: " . $from . "\r\n";
    12.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13.   $message="
    14. Content-Type: multipart/mixed; boundary=\"$boundary\"
    15. --$boundary
    16. Content-Type: text/plain; charset=\"utf-8\"
    17. Content-Transfer-Encoding: 7bit
    18. $message";
    19.      if(is_uploaded_file($_FILES['fileFF']['tmp_name'])) {
    20.          $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'])));
    21.          $filename = $_FILES['fileFF']['name'];
    22.          $filetype = $_FILES['fileFF']['type'];
    23.          $filesize = $_FILES['fileFF']['size'];
    24.          $message.="
    25.  
    26. --$boundary
    27. Content-Type: \"$filetype\"; name=\"$filename\"
    28. Content-Transfer-Encoding: base64
    29. Content-Disposition: attachment; filename=\"$filename\"
    30.  
    31. $attachment";
    32.      }
    33.    $message.="
    34. --$boundary--";
    35.   if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    36.     mail($to, $subject, $message, $headers);
    37.     echo $_POST['nameFF'].', Ваше сообщение отправлено, спасибо!';
    38.   } else {
    39.     echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
    40.   }
    41. }
    42. ?>
    корректно приходит только "Заполнена контактная форма на сайте ", и Адрес сайта.
    Чувствую что-то в php не заполнено.

    Код (Javascript):
    1. $(function() {
    2.   document.getElementById('ajax-contact-form').addEventListener('submit', function(evt){
    3.     var http = new XMLHttpRequest(), f = this;
    4.     var th = $(this);
    5.     evt.preventDefault();
    6.     http.open("POST", "contact.php", true);
    7.     http.onreadystatechange = function() {
    8.       if (http.readyState == 4 && http.status == 200) {
    9.         alert(http.responseText);
    10.         if (http.responseText.indexOf(f.nameFF.value) == 0) { // очистить поля формы, если в ответе первым словом будет имя отправителя (nameFF)
    11.           th.trigger("reset");
    12.         }
    13.       }
    14.     }
    15.     http.onerror = function() {
    16.       alert('Ошибка, попробуйте еще раз');
    17.     }
    18.     http.send(new FormData(f));
    19.   }, false);
    20. });
    Буду признательна за помощь! никак не могу себе сайт сделать по-человечески)
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Надин исправьте contact.php и увидите что все отправляеться, в скриптах ошибок нет.
    PHP:
    1. <?php
    2. if (isset ($_POST['contactFF'])) {
    3.   $to = "nadin@mail.ru";
    4.   $from = "nadinadin@mail.ru";
    5.   $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
    6.   $message = "Имя пользователя: ".$_POST['nameFF']."\nEmail пользователя ".$_POST['contactFF']."\nТелефон пользователя ".$_POST['telFF']."\nСообщение: ".$_POST['projectFF']."\n\nАдрес сайта: ".$_SERVER['HTTP_REFERER'];
    7.   $boundary = md5(date('r', time()));
    8.   $filesize = '';
    9.   $headers = "MIME-Version: 1.0\r\n";
    10.   $headers .= "From: " . $from . "\r\n";
    11.   $headers .= "Reply-To: " . $from . "\r\n";
    12.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13.   $message="
    14. Content-Type: multipart/mixed; boundary=\"$boundary\"
    15. --$boundary
    16. Content-Type: text/plain; charset=\"utf-8\"
    17. Content-Transfer-Encoding: 7bit
    18. $message";
    19.      if(is_uploaded_file($_FILES['fileFF']['tmp_name'])) {
    20.          $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'])));
    21.          $filename = $_FILES['fileFF']['name'];
    22.          $filetype = $_FILES['fileFF']['type'];
    23.          $filesize = $_FILES['fileFF']['size'];
    24.          $message.="
    25. --$boundary
    26. Content-Type: \"$filetype\"; name=\"$filename\"
    27. Content-Transfer-Encoding: base64
    28. Content-Disposition: attachment; filename=\"$filename\"
    29. $attachment";
    30.      }
    31.    $message.="
    32. --$boundary--";
    33.  
    34. echo $message;
    35. //   if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    36. //     mail($to, $subject, $message, $headers);
    37. //     echo $_POST['nameFF'].', Ваше сообщение отправлено, спасибо!';
    38. //   } else {
    39. //     echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
    40. //   }
    41. }
    42. ?>
     
  3. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    спасибо за ответ.. не пойму на что исправить ?
    --- Добавлено ---
    у меня на почту приходит пустое письмо с адресом и местом отправления, а остльные заполненные данные не доходят.. дело в имени файла?
     
  4. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Надин нет, я к тому что весь код отрабатывает правильно.
     
  5. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    теперь я совсем в ступоре :(
     
  6. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Надин попробуйте исправить contact.php так, и посмотрите что на почту придет. Но фаил не выбирайте, это просто для теста:
    PHP:
    1. <?php
    2. if (isset ($_POST['contactFF'])) {
    3.   $to = "nadin@mail.ru";
    4.   $from = "nadinadin@mail.ru";
    5.   $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
    6.   $message = "Имя пользователя: ".$_POST['nameFF']."\nEmail пользователя ".$_POST['contactFF']."\nТелефон пользователя ".$_POST['telFF']."\nСообщение: ".$_POST['projectFF']."\n\nАдрес сайта: ".$_SERVER['HTTP_REFERER'];
    7.   $boundary = md5(date('r', time()));
    8.   $filesize = '';
    9.   $headers = "MIME-Version: 1.0\r\n";
    10.   $headers .= "From: " . $from . "\r\n";
    11.   $headers .= "Reply-To: " . $from . "\r\n";
    12.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13. if ($filesize < 10000000) {
    14. mail($to, $subject, $message, $headers);
    15. echo $_POST['nameFF'].', Ваше сообщение отправлено, спасибо!';
    16. } else {
    17. echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
    18. }
    19. }
    до скобку забыл, добавил
     
  7. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    я прошу прощения, я не вижу разницы.. что исправить надо? я туплю..
     
  8. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    вот это
    PHP:
    1. <?php
    2. if (isset ($_POST['contactFF'])) {
    3.   $to = "nadin@mail.ru";
    4.   $from = "nadinadin@mail.ru";
    5.   $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
    6.   $message = "Имя пользователя: ".$_POST['nameFF']."\nEmail пользователя ".$_POST['contactFF']."\nТелефон пользователя ".$_POST['telFF']."\nСообщение: ".$_POST['projectFF']."\n\nАдрес сайта: ".$_SERVER['HTTP_REFERER'];
    7.   $boundary = md5(date('r', time()));
    8.   $filesize = '';
    9.   $headers = "MIME-Version: 1.0\r\n";
    10.   $headers .= "From: " . $from . "\r\n";
    11.   $headers .= "Reply-To: " . $from . "\r\n";
    12.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13.   $message="
    14. Content-Type: multipart/mixed; boundary=\"$boundary\"
    15. --$boundary
    16. Content-Type: text/plain; charset=\"utf-8\"
    17. Content-Transfer-Encoding: 7bit
    18. $message";
    19.      if(is_uploaded_file($_FILES['fileFF']['tmp_name'])) {
    20.          $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'])));
    21.          $filename = $_FILES['fileFF']['name'];
    22.          $filetype = $_FILES['fileFF']['type'];
    23.          $filesize = $_FILES['fileFF']['size'];
    24.          $message.="
    25. --$boundary
    26. Content-Type: \"$filetype\"; name=\"$filename\"
    27. Content-Transfer-Encoding: base64
    28. Content-Disposition: attachment; filename=\"$filename\"
    29. $attachment";
    30.      }
    31.    $message.="
    32. --$boundary--";
    33.   if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
    34.     mail($to, $subject, $message, $headers);
    35.     echo $_POST['nameFF'].', Ваше сообщение отправлено, спасибо!';
    36.   } else {
    37.     echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
    38.   }
    39. }
    40. ?>
    на вот это
    PHP:
    1. <?php
    2. if (isset ($_POST['contactFF'])) {
    3.   $to = "nadin@mail.ru";
    4.   $from = "nadinadin@mail.ru";
    5.   $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
    6.   $message = "Имя пользователя: ".$_POST['nameFF']."\nEmail пользователя ".$_POST['contactFF']."\nТелефон пользователя ".$_POST['telFF']."\nСообщение: ".$_POST['projectFF']."\n\nАдрес сайта: ".$_SERVER['HTTP_REFERER'];
    7.   $boundary = md5(date('r', time()));
    8.   $filesize = '';
    9.   $headers = "MIME-Version: 1.0\r\n";
    10.   $headers .= "From: " . $from . "\r\n";
    11.   $headers .= "Reply-To: " . $from . "\r\n";
    12.   $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    13. if ($filesize < 10000000) {
    14. mail($to, $subject, $message, $headers);
    15. echo $_POST['nameFF'].', Ваше сообщение отправлено, спасибо!';
    16. } else {
    17. echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
    18. }
    19. }
    20. ?>
    и отослать на почту и посмотреть что придет, но без файла
     
  9. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    ок, щас попробую..
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Советую ознакомиться с форматом письма с вложением, например из моей статьи Как сделать отправку письма с вложением?
    --- Добавлено ---
    И utf-8 с 7bit, мягко говоря, плохо сочетается. Используйте 8bit и надейтесь, что вся цепочка вплоть до получателя это поддерживает.
     
  11. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    ничего не поменялось - пустое письмо
     
  12. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    а так если просто:
    PHP:
    1. <?php
    2. $to      = 'nadin@mail.ru';
    3. $subject = 'the subject';
    4. $message="Имя пользователя: ".$_POST['nameFF']
    5. $headers = 'From: webmaster@example.com' . "\r\n" .
    6.     'Reply-To: webmaster@example.com' . "\r\n" .
    7.     'X-Mailer: PHP/' . phpversion();
    8.  
    9. mail($to, $subject, $message, $headers);
    10. ?>
     
  13. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    PHP:
    1.   $to = "nadin@mail.ru";
    2.   $from = "nadinadin@mail.ru";
    :D Странно, что Маша вообще вам что-то доставляет с таким-то отношением к делу. Или для примера написали эти адреса?
     
  14. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    да, для примера)
     
  15. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Надин тк с простым примером пришло сообщение?
     
  16. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    вот у Вас в примере заполнены эти места, а у меня нет. это норм?
     
  17. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    у вас тоже все там заполнено
    PHP:
    1. $from = "nadinadin@mail.ru";
    2. $headers .= "From: " . $from . "\r\n";
    3. $headers .= "Reply-To: " . $from . "\r\n";
    --- Добавлено ---
    Не в этом дело, надо сначала добиться чтобы хоть что то на почту приходило, без форм и прочего. И от этого плясать. Вот ссылка на функцию отправки письма https://www.php.net/manual/ru/function.mail.php
     
  18. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Artur_hopf, ТС вроде пишет, что письмо приходит, но пустое ;)

    @Надин, бюджет предполагается на это дело или ожидаете халявное решение?
    --- Добавлено ---
    Ну, например из-за ошибки в формате, о чем я написал в моем первом посте :)
     
  19. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miketomlin если у нее так не приходит, то причем тут формат?:
    PHP:
    1. <?php
    2. $to      = 'nadin@mail.ru';
    3. $subject = 'the subject';
    4. $message="Имя пользователя: ".$_POST['nameFF']
    5. $headers = 'From: webmaster@example.com' . "\r\n" .
    6.     'Reply-To: webmaster@example.com' . "\r\n" .
    7.     'X-Mailer: PHP/' . phpversion();
    8. mail($to, $subject, $message, $headers);
    9. ?>
     
  20. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    @Artur_hopf:
    И еще до этого поста ТС об этом писал(а).
     
  21. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    какой бюджет, если я сама себе сайт делаю?) да и здесь вроде особо писать ничего уже не нужно - все есть, просто что-то не так.. отправляет, но строки с телефоном и сообщением приходят пустыми.я прикрепила фотку
     
  22. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    ОК, успехов :) Если сами делаете, что мешало пройти по оставленной мной ссылке и ознакомиться с форматом?
    --- Добавлено ---
    P.S. Можно не отвечать. Это скорее риторический вопрос. Еще раз успехов.
     
  23. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    то, что php и js мне не знаком, даже в терминах. Спасибо!
     
  24. Надин

    Надин Новичок

    С нами с:
    28 апр 2019
    Сообщения:
    13
    Симпатии:
    1
    всем спасибо! обойдусь пока без нее:)