php邮件表单中的字段不会注册用户输入

时间:2016-12-14 23:57:06

标签: php jquery html phpmailer

我正在尝试在我的网站上的联系表单中添加另一个输入字段。默认表单附带名称,电子邮件和消息字段。我也试图添加主题字段。

问题是它不会在主题字段中记录任何输入。因此,当我收到电子邮件时,所有默认字段都已正确记录输入,但我添加的主题字段为空。

下面是相关的html,javascript(对于ajax)和php代码:

//Listens for Submit button, prevents page refresh and calls on submitForm()
$("#contactForm").submit(function(event) {
  // cancels the form submission
  event.preventDefault();
  submitForm();
});


//Grabs form input, and starts an ajax object
function submitForm() {
  // Initiate Variables With Form Content
  var name = $("#name").val();
  var email = $("#email").val();
  var messagesubject = $("#messagesubject").val();
  var message = $("#message").val();

  //I have added "&messagesubject=" + messagesubject to the data: to get input in the subject field
  $.ajax({
    type: "POST",
    url: "php/form-process.php",
    data: "name=" + name + "&email=" + email + "&messagesubject=" + messagesubject + "&message=" + message,
    success: function(text) {
      if (text == "success") {
        formSuccess();
      }
    }
  });
}

function formSuccess() {
  $("#msgSubmit").removeClass("hidden");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/js/bootstrap-select.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.1/css/bootstrap-select.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="col-lg-6 col-xs-12">
  <div class="contact-form">
    <h3>Send us a message. We're here to help!</h3>
    <form role="form" id="contactForm">
      <div class="row">
        <div class="form-group col-sm-6">
          <label for="name" class="h4">Name</label>
          <input type="text" class="form-control" id="name" placeholder="Enter name" required>
        </div>
        <div class="form-group col-sm-6">
          <label for="email" class="h4">Email</label>
          <input type="email" class="form-control" id="email" placeholder="Enter email" required>
        </div>
      </div>
      <div class="form-group">
        <label for="messagesubject" class="h4 ">Subject</label>
        <input type="messagesubject" class="form-control" placeholder="Enter Subject" required>
      </div>
      <div class="form-group">
        <label for="message" class="h4 ">Message</label>
        <textarea id="message" class="form-control" rows="5" placeholder="Enter your message" required></textarea>
      </div>
      <button type="submit" id="form-submit" class="btn btn-success btn-lg pull-right ">Submit</button>
      <div id="msgSubmit" class="h3 text-center hidden">Message Submitted!</div>
    </form>
  </div>
</div>

这是处理phpmail并将该消息发送到我的电子邮件的PHP代码。无法将其包含在代码段中,但这是一个非常简单的phpmail设置。

<?php
$name = $_POST["name"];
$email = $_POST["email"];
$MessageSubject = $_POST["MessageSubject"];
$message = $_POST["message"];

$EmailTo = "support@company";
$Subject = "$messagesubject from $name";

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

$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";

$Body .= "Subject: ";
$Body .= $messagesubject;
$Body .= "\n";

$Body .= "Message: ";
$Body .= $message;
$Body .= "\n";

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

// redirect to success page
if ($success){
   echo "success";
}else{
    echo "invalid";
}

?>

1 个答案:

答案 0 :(得分:2)

输入字段中缺少

id="messagesubject"

  <div class="form-group">
    <label for="messagesubject" class="h4 ">Subject</label>
    <input type="messagesubject" class="form-control" id="messagesubject" placeholder="Enter Subject" required>
  </div>