联系表单发布空字段

时间:2018-01-19 00:45:54

标签: php forms contact-form

我在html中设计了一个表单,我正在使用php将其发送到我的电子邮箱。表单验证确定,除了它不发送一些信息之外,一切都很好。以下是我的电子邮件:

Name: 
Email: 
Tel.: 
Message: test

因此,当我填写它时,唯一的字段是“消息”字段。其他的是空白的,虽然表格验证和处理。我想在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");
}

?>

1 个答案:

答案 0 :(得分:3)

您的输入字段缺少name属性

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

它们都可以是相同的。因此,message的工作原理。

请记住,可以轻松绕过JS验证,并且还应该在php中检查用户输入。

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