HTML表单发送GET而不是POST(XAMPP,Apache,localhost)

时间:2019-06-08 08:11:21

标签: php html xampp http-post

我查找了其他问题,并找到了可能的解决方案,但它们似乎对我没有帮助。 根据Firefox中的网络控制台,当我将方法设置为POST时,我的联系表单将发送GET。

我已经检查了我的HTML代码是否有错误,但是找不到任何错误;没有未关闭的表单,div等。我也检查了php的语法。 我也尝试将“提交”按钮设置为<button type="submit" formmethod="post" formaction="form-to-email.php" name="submit" class="button">Und los</button>',但这也无济于事。

编辑:这是此页面的完整HTML代码:

  <!DOCTYPE html>
<html lang="" dir="ltr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="description" content="placeholder">
  <meta name="keywords" content="placeholder">
  <meta name="author" content="placeholder">

  <title>MADesign.</title>
  <link rel="author" href="robots.txt" />
  <link rel="author" href="humans.txt" />
  <!-- CSS -->
  <link rel="stylesheet" href="css/maincss.css">
</head>

<body>
  <div id="holder">
    <!-- page header -->
    <div class="bg-image-small">
      <div id="main_menu">
        <header id="page_header">
          <img src="images/mad-logo-300px.png" alt="mad logo" id="mad-logo">
        </header>
        <!-- END page header -->
        <!-- main navigation -->
        <nav id="main-nav">
          <ul>
            <li><a href="index.html">home</a></li>
            <li><a href="index.html#link1">link1</a></li>
            <li><a href="index.html#link2">link2</a></li>
            <li><a href="galerie.html">link3</a></li>
            <li><a href="kontakt.html">kontakt</a></li>
            <li><a href="impressum.html">impressum</a></li>
          </ul>
        </nav><!-- END main navigation -->
      </div><!-- END main menu -->
    </div><!-- END background image -->

    <!-- main content -->
    <main>
      <!-- contact form -->
      <form id="my-form" name="myForm" action="/form-to-email.php" method="post">
        <h2>Let's get in touch.</h2>
        <p>Schick mir eine Email an <a href="mailto:abc@placeholder.de">abc@placeholder.de</a> oder nutze mein Kontaktformular.</p>

        <div class="gender">
          <input type="radio" name="titles" value="male" id="mr"
            <?php if($titles == "male") echo "checked" ?>>
          <label for="titles">Herr</label>
          <input type="radio" name="titles" value="female" id="mrs"
            <?php if($titles == "female") echo "checked" ?>>
          <label for="titles">Frau</label>
          <input type="radio" name="titles" value="nonbinary" id="mx"
            <?php if($titles == "nonbinary") echo "checked" ?>>
          <label for="titles">Hallo</label>
          <input type="radio" name="titles" value="person" id="person"
            <?php if($titles == "person") echo "checked" ?>>
          <label for="titles">Person</label>
          <div class="errormsg">
            <?php echo $errors['titles']; ?>
          </div>
        </div>
        <div class="form-block">
          <label for="usrname">Name:</label><br>
          <input type="text" name="usrname" id="usrname" class="styleinput" size="20" maxlength="30" value="<?php echo htmlspecialchars($usrname) ?>">
          <div class="errormsg">
            <?php echo $errors['usrname']; ?>
          </div>
        </div>
        <div class="form-block">
          <label for="email">Email:</label><br>
          <input type="text" name="email" id="email" class="styleinput" size="20" maxlength="30" value="<?php echo htmlspecialchars($email) ?>">
          <div class="errormsg">
            <?php echo $errors['email']; ?>
          </div>
        </div>

        <div class="user-input form-block">
          <label for="user-input">Nachricht:</label><br>
          <textarea class="styleinput" id="message-me" name="usrmsg" rows="4" cols="50" value="<?php echo htmlspecialchars($usrmsg) ?>"></textarea>
          <div class="errormsg">
            <?php echo $errors['usrmsg']; ?>
          </div>
        </div>
        <button type="submit" formmethod="post" formaction="/form-to-email.php" name="submit" class="button">Und los</button>
        <input type="reset" name="reset" class="button" value="Nochmal neu..." onclick="emptyMsg()">
        <div id="message"></div>
      </form>
      <!-- END contact form -->
    </main>
    <!-- END main content -->
    <!-- footer -->
    <footer>
      <p>&copy2019 placeholder</p>
    </footer><!-- END footer-->
  </div><!-- END holder -->

  <!-- JavaScript and jQuery -->
  <script src="https://code.jquery.com/jquery-3.4.0.min.js" integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg=" crossorigin="anonymous"></script>
  <script src="js/mainjs.js"></script>
 </body>
</html>

这是PHP(与kontakt.php保存在同一目录中):

<?php

$titles = $usrmsg = $usrname = $email = "";
$errors = array("email"=>"", "usrname"=>"", "usrmsg"=>"", "titles"=>"");

if(isset($_POST["submit"])){

  //check Email
  if(empty($_POST["email"])){
    $errors["email"] = "Bitte Email Adresse angeben.";
  } else {
    $email = $_POST["email"];
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
      $errors["email"] = "Die Email Adresse sollte gültig sein.";
    }
  }

 //check name
  if(empty($_POST["usrname"])){
    $errors["usrname"] = "Wie heißt du?";
  } else {
    $usrname = $_POST["usrname"];
    $usrname = filter_var($usrname, FILTER_SANITIZE_STRING);
    if(!preg_match("/^[a-zA-Z\s]+$/", $usrname)){
      $errors["usrname"] = "Sorry! Der Name darf nur Buchstaben und Leerzeichen enthalten.";
    }
  }

  //check message
   if(empty($_POST["usrmsg"])){
     $errors["usrmsg"] = "Hier sollte etwas Text stehen. Muss ja nicht viel sein.";
   } else {
     $usrmsg = $_POST["usrmsg"];
     $usrmsg = filter_var($usrmsg, FILTER_SANITIZE_STRING);
     }

  //check titles
    $titles = $_POST["titles"];
    if ($titles==NULL) {
      $errors["titles"] = "Welche Ansprache darf ich verwenden?";
    }
   }
?>

编辑:这是用于客户端表单验证的JS(它不是最终版本,某些验证仍然丢失/可能会更改,但到目前为止它已经可以正常工作了):

  var myForm = document.forms.myForm;
  var message = document.getElementById('message');

  myForm.onsubmit = function() {

    //get IDs for the title
    var mr = document.getElementById('mr');
    var mrs = document.getElementById('mrs');
    var mx = document.getElementById('mx');
    var pers = document.getElementById('person');
    //get ID for the textarea
    var usrInput = document.getElementById('message-me');

    if (myForm.usrname.value == "") {
      message.innerHTML = "Moment! Wie heißt du?"
      return false;
    } else if (usrInput.value == "") {
      message.innerHTML = "Das Nachrichtenfeld sollte nicht leer sein..."
      return false;
    } else if (email.value == "") {
      message.innerHTML = "Wie lautet deine Email Adresse?"
      return false;
    } else if (usrInput.value.length < 10) {
      //check min length of textarea
      message.innerHTML = "Die Nachricht sollte etwas länger sein..."
      return false;
    } else if (!mr.checked &&
      !mrs.checked &&
      !mx.checked &&
      !pers.checked) {
      message.innerHTML = "Welche Ansprache darf ich verwenden?"
      return false;
    } else {
      message.innerHTML = "";
      return true;
    }

我正在使用XAMPP(Apache)通过本地主机对此进行测试。

如何获取发送POST而不是GET的表格?我是否忽略了语法错误,拼写错误,或者我找不到的变量有错误?谢谢任何输入。

1 个答案:

答案 0 :(得分:0)

有时会发生这种情况。我认为我没有足够的经验为您提供完美的解决方案,但是您可以实施以下一系列尝试:

  1. 尝试用大写字母写“ post”关键字(例如“ POST”)。
  2. 有时,即使保存并刷新后,xampp服务器也无法反映更改。尝试使用(ctrl + F5)刷新。这强加了硬刷新,导致xampp服务器重新加载所有资源。
  3. 尝试重新启动xampp服务器。

如果有帮助,请还原。...