BagramGalina
@BagramGalina
Осваиваю профессию Фронтендер. Пишу книги

Форма обратной связи не сохраняет данные. Присылает пустые письма. Выдает ошибку «Name is required Email is required Message is required». почему?

Добрый день! сайт сделан на локалке с использованием bootstrap.
сделана форма обратной связи в отдельном модальном окне, шаблоны с бутсрап (правила, т.к. не работало).
ПРОБЛЕМА:
1) письма с формы приходят следующего содержания.
To: Suvenirka2014@inbox.ru
Subject: New Message Received
From:
Name:
Email:
2) при отправке не пишет, что письмо отправлено. выдается следующая ошибка.
Name is required Email is required Message is required
ВОПРОС: как исправить? Помогите, пожалуйста))) все что нашла в интернете перепробовала.

Информация по проекту.
структура файлов проекта относящихся к данной форме (я новичок, брала из обучения в интернете, правила согласно выходящих ошибок):
index.html
form-process.php
form-process.js
validator.min.js

СОДЕРЖАНИЕ index.html
<!-- Модальное окно -->

<div class="modal fade" id="exampleModal_1" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title1" id="exampleModalLabel">Привет, меня зовут Дмитрий! Вы можете отправить ваш вопрос и контакты мне на почту! свяжусь с вами  вближайшее время</h5>
         <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
      </div>
      <div class="modal-body">
       <!-- Обратная связь -->
	<form action="php/form-process.php">	
<script src="js/form-script.js"></script>
  <div class="form-group">
    <label for="Name">Ваше имя</label>
    <input type="text" class="form-control" id="Name" placeholder="Иван Иванов">
<div  class="help-block with-errors"></div>
  </div>
  <div class="form-group">
    <label for="Email">Email</label>
    <input type="email" class="form-control" id="Email" placeholder="ivanov@example.com">
    <div  class="help-block with-errors"></div>
  </div>
  <div class="form-group">
    <label for="Message">Ваш вопрос</label>
    <input type="text" class="form-control" id="Message" placeholder="Ваш вопрос">
    <div  class="help-block with-errors"></div>
  </div>
 <button  value=" Send" class="btn btn-default" type="submit" id="submit">Отправить </button>
</form>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
        <button type="button"  class="btn btn-primary">Сохранить изменения</button>
      </div>
    </div>
  </div>
</div>


СОДЕРЖАНИЕ form-process.php

<?php

$errorMSG = "";

// NAME
if (empty($_POST["name"])) {
    $errorMSG = "Name is required ";
} else {
    $name = $_POST["name"];
}

// EMAIL
if (empty($_POST["email"])) {
    $errorMSG .= "Email is required ";
} else {
    $email = $_POST["email"];
}

// MESSAGE
if (empty($_POST["message"])) {
    $errorMSG .= "Message is required ";
} else {
    $message = $_POST["message"];
}


$EmailTo = "Suvenirka2014@inbox.ru";
$Subject = "New Message Received";

// prepare email body text
$Body = "";
$Body .= "Name: ";
$name = "";
$Body .= $name;
$Body .= "\n";
$Body .= "Email: ";
$email = "";
$Body .= $email;
$Body .= "\n";
$Body .= "Message: ";
$message = "";
$Body .= $message;
$Body .= "\n";

// send email
$success = mail($EmailTo, $Subject, $Body, "From:".$email);

// redirect to success page
if ($success && $errorMSG == ""){
   echo "success";
}else{
    if($errorMSG == ""){
        echo "Something went wrong :(";
    } else {
        echo $errorMSG;
    }
}

?>


СОДЕРЖАНИЕ form-process.js

$("#contactForm").validator().on("submit", function (event) {
    if (event.isDefaultPrevented()) {
        // handle the invalid form...
        formError();
        submitMSG(false, "Did you fill in the form properly?");
    } else {
        // everything looks good!
        event.preventDefault();
        submitForm();
    }
});


function submitForm(){
    // Initiate Variables With Form Content
    var name = $("#name").val();
    var email = $("#email").val();
    var message = $("#message").val();

    $.ajax({
        type: "POST",
        url: "php/form-process.php",
        data: "name=" + name + "&email=" + email + "&message=" + message,
        success : function(text){
            if (text == "success"){
                formSuccess();
            } else {
                formError();
                submitMSG(false,text);
            }
        }
    });
}

function formSuccess(){
    $("#contactForm")[0].reset();
    submitMSG(true, "Message Submitted!")
}

function formError(){
    $("#contactForm").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
        $(this).removeClass();
    });
}

function submitMSG(valid, msg){
    if(valid){
        var msgClasses = "h3 text-center tada animated text-success";
    } else {
        var msgClasses = "h3 text-center text-danger";
    }
    $("#msgSubmit").removeClass().addClass(msgClasses).text(msg);
}


СОДЕРЖАНИЕ validator.min.js
не влезло. стандартное от бутстрап. вообще сомневаюсь так ли он нужен. но был в образце

Заранее благодарю всех неравнодушных участников этого сообщества за помощь и отзывчивость.
Готова к конструктивной критике. В конце концов я только учусь
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Селекторы регистрозависимые

У вас идентификаторы в html с большой буквы

<input type="text" class="form-control" id="Name" placeholder="Иван Иванов">


А в javascript с маленькой

var name = $("#name").val();

вот эти:
id="Name"
$("#name")


Сделайте одинаково. Касается всех полей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Kuzmin_A
Full stack web developer
form-process.php

<?php

$errorMSG = "";

// NAME
if (empty($_POST["name"])) {
    $errorMSG = "Name is required ";
} else {
    $name = $_POST["name"];
}

// EMAIL
if (empty($_POST["email"])) {
    $errorMSG .= "Email is required ";
} else {
    $email = $_POST["email"];
}

// MESSAGE
if (empty($_POST["message"])) {
    $errorMSG .= "Message is required ";
} else {
    $message = $_POST["message"];
}

/*
 если оставить ваш код здесь то письмо будет отправляться в любом случае
 даже если заполнены не все данные формы
*/

// if no errors
// prepare mail body and send
if ($errorMSG == "") {
    $EmailTo = "Suvenirka2014@inbox.ru";
    $Subject = "New Message Received";

    // prepare email body text
    $Body = "";
    $Body .= "Name: ";
    $name = "";
    $Body .= $name;
    $Body .= "\n";
    $Body .= "Email: ";
    $email = "";
    $Body .= $email;
    $Body .= "\n";
    $Body .= "Message: ";
    $message = "";
    $Body .= $message;
    $Body .= "\n";

    // send email
    $success = mail($EmailTo, $Subject, $Body, "From:" . $email);
    // плохая идея указывать `"From:" . $email`, т.к. почтовики с 99% вероятностью
    // не примут такие письма...
    // например, пользователь указал email example@gmail.com, с домена gmail.com
    // разрешено отправлять письма с определенных ip-адресов которые прописаны в 
    // spf записи. Это не только gmail, но также яндекс, mail.ru, rambler, etc...

    if ($success) {
        echo "success";
    } else {
        echo "Something went wrong :(";
    }
} else {
    if ($errorMSG == "") {
        echo "Something went wrong :(";
    } else {
        echo $errorMSG;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
05 нояб. 2024, в 17:38
150000 руб./за проект
05 нояб. 2024, в 16:31
500 руб./за проект
05 нояб. 2024, в 16:24
5000 руб./за проект