联系表格发布空字段

Contact form posts empty fields

我在 html 中设计了一个表格,我正在使用 php 将其发送到我的电子邮箱。表单验证正常,除了不发送某些信息外,一切都很好。这是我的电子邮件的方式:

Name: 
Email: 
Tel.: 
Message: test

所以当我填写它时,唯一经过的字段是 "Message" 字段。尽管表单经过验证和处理,但其他的是空白的。我想 php 代码中有些东西。我不太了解 php,所以需要一些帮助。谢谢

          <form action="post.php" method="post">
                <div class="form-group">
                  <label for="name">Name *</label>
                  <input type="text" class="form-control" id="name"
                  placeholder="" required="required" oninvalid="this.setCustomValidity('Please enter your name')"
                  oninput="setCustomValidity('')">
                </div>
                <div class="form-group">
                  <label for="email">E-mail *</label>
                  <div class="input-group">
                    <span class="input-group-addon">
                      <span class="glyphicon glyphicon-envelope"></span>
                    </span>
                    <input type="email" class="form-control" id="email" placeholder="" required="required"
                    oninvalid="this.setCustomValidity('please enter your email')" oninput="setCustomValidity('')">
                  </div>
                </div>
                <div class="form-group">
                  <label for="name">phone *</label>
                  <input type="text" class="form-control" id="phone"
                  placeholder="" required="required" oninvalid="this.setCustomValidity('please enter your phone')"
                  oninput="setCustomValidity('')">
                </div>
              </div>
              <div class="col-md-12">
                <div class="form-group">
                  <label for="name">message *</label>
                  <textarea name="message" id="message" class="form-control"
                  rows="10" cols="25" required="required" placeholder="" oninvalid="this.setCustomValidity('please enter your message')"
                  oninput="setCustomValidity('')"></textarea>
                </div>
              </div>
              <div class="col-md-12">
                <button type="submit" class="btn btn-primary pull-right" id="btnContactUs">send</button>

          </form>

和php代码:

<?php

$addressto = "info@xxx.com";
$subject = "Message from the website";
$content = "Name: ".$_POST['name']."\n"
           ."Email: ".$_POST['email']."\n"
           ."Tel.: ".$_POST['phone']."\n"     
           ."Message: ".$_POST['message']."\n";

if(!$_POST['name'] || !$_POST['email'] || !$_POST['message']){
    header("Location: contact.html");
}

$email = $_POST['email'];
if (mail($addressto, $subject, $content, 'Od: <' . $email . '>')) {
    header("Location: contact-ok.html");
}

?>

您的输入字段缺少 name 属性

id 主要用于 JS/CSS 操作,而 name 将是 POST 数组中的键。

它们可以相同。这就是为什么你的 message 有效。

请记住,JS 验证很容易被绕过,用户输入也应该在 php 中检查。

<input type="text" class="form-control" id="name" name="name"...>