PHP表单导致问题[重复]

rnmwe5a2  于 2023-02-03  发布在  PHP
关注(0)|答案(3)|浏览(108)
    • 此问题在此处已有答案**:

(41个答案)
昨天关门了。
我正尝试在PHP中做一个概念注册页面,我需要要求用户输入文本的所有输入。如果没有,它会说,例如,"你需要一个有效的电子邮件地址!"或类似的东西。
我的问题是让文本真正显示出来。当我提交的时候,它没有显示错误,而是停留在一个星号上。
我的代码:

<html>
  <head>
    <link rel="stylesheet" href="style.css">
    <title>Test</title>
  </head>
  <body>
    <?php
      $emailErr = $usernameErr = $passwordErr = "";
      $email = $username = $password = "";

      if ($_SERVER["REQUIRED_METHOD"] == "POST") {
        if (empty($_POST["email"])) {
          $emailErr = "You must enter a valid email address!";
        } else {
          $email = testData($_POST["email"]);
        }
        if (empty($_POST["username"])) {
          $usernameErr = "You must create a username!";
        } else {
          $username = testData($_POST["username"]);
        }
        if (empty($_POST["password"])) {
          $passwordErr = "You must create a password!";
        } else {
          $password = testData($_POST["password"]);
        }
      }
      function testData($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
      }
    ?>
    <p><span class="error">* Required Field(s)</span></p>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
      <label for="email">Email Address:</label>
      <span class="error">* <?php echo $emailErr;?></span>
      <br>
      <input type="email" name="email" placeholder="someone@organization.com" />
      <br><br>
      <label for="username">Username:</label>
      <span class="error">* <?php echo $usernameErr;?></span>
      <br>
      <input type="text" name="username" />
      <br><br>
      <label for="password">Password:</label>
      <span class="error">* <?php echo $passwordErr;?></span>
      <br>
      <input type="password" name="password" />
      <br><br>
      <input type="submit" value="Create Account!">
    </form>
  </body>
</html>

有谁能帮我找到解决我这种情况的办法吗?

ar7v8xwq

ar7v8xwq1#

它不是$_SERVER["REQUIRED_METHOD"],它应该是$_SERVER["REQUEST_METHOD"],所以if条件块将是

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["email"])) {
        $emailErr = "You must enter a valid email address!";
    } else {
        $email = testData($_POST["email"]);
    }
    if (empty($_POST["username"])) {
        $usernameErr = "You must create a username!";
    } else {
        $username = testData($_POST["username"]);
    }
    if (empty($_POST["password"])) {
        $passwordErr = "You must create a password!";
    } else {
        $password = testData($_POST["password"]);
    }
}

另外,另一种快速简便的调试方法是使用var_dump(),查看代码块是否正在执行,以及变量中是否设置了所需的数据。
你也可以用var_dump($_SERVER);来快速检查这个超级全局变量有什么数据,或者在if块中有什么数据,这样你就可以确定真值条件是否通过了。

xhv8bpkk

xhv8bpkk2#

$_SERVER["REQUIRED_METHOD"]的索引更改为REQUEST_METHOD
有关详细信息,请访问https://www.php.net/manual/en/reserved.variables.server.php

aiazj4mn

aiazj4mn3#

$_SERVER["REQUIRED_METHOD"] == "POST"将引发错误。$_SERVER["REQUEST_METHOD"] == "POST"将是您问题的正确答案。

if ($_SERVER['REQUEST_METHOD'] === 'POST')

相关问题