繁体   English   中英

在这个 PHP 示例中我做错了什么?

[英]What am i doing wrong in this PHP example?

我一直在与 w3schools 一起研究 php 2 天,我试图重写表单示例而不查看其中的示例代码。 但是当我点击提交按钮时,我无法得到结果。 我正确地得到了错误,但是当我正确填写输入字段时,页面只是更新本身,没有任何反应。 我将我的代码与 w3schools 中的原始代码进行了比较,但我没有发现任何错误。 我在这里做错了什么?

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>

  <?php
    $name = $gender = $email = "";
    $nameErr = $genderErr = $emailErr = "";

    if($_SERVER["REQUEST_METHOD"] == "POST"){
      if(empty($_POST["name"])){
        $nameErr = "Name cannot be empty.";
      }
      else{
        $name = test_input($name);
        if(!preg_match("/^[a-zA-Z ]*$/",$name)){
          $nameErr = "The name is not valid, name cannot contain special characters.";
        }
      }
      if(empty($_POST["email"])){
        $emailErr = "E-Mail cannot be empty.";
      }
      else{
        $email = test_input($email);
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
          $emailErr = "The E-Mail is not valid";
        }
      }
      if(empty($_POST["gender"])){
        $genderErr = "Gender is required.";
      }
      else{
        $gender = test_input($gender);
      }
    }

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);

      return $data;
    }
  ?>

  <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
    <label for="name">Name : </label>
    <input id="name" type="text" name="name" value="<?php echo $name;?>"><span>* <?php echo $nameErr;?></span><br>
    <label for="email">E-Mail : </label>
    <input id="email" type="email" name="email" value="<?php echo $email;?>"><span>* <?php echo $nameErr;?></span><br>
    <span>* <?php echo $genderErr;?></span>
    <label>Gender : </label>
    <input type="radio" name="gender" <?php if (isset($gender) && $gender == "female") echo "checked"; ?> value="female"> Female
    <input type="radio" name="gender" <?php if (isset($gender) && $gender == "male") echo "checked"; ?> value="male"> Male
    <input type="submit" name="submit" value="Enter">
  </form>

  <?php
  echo "<h2>Your Input:</h2>";
  echo $name;
  echo "<br>";
  echo $email;
  echo "<br>";
  echo $gender;
  ?>

</body>

</html>

看这一行: $name = test_input($name); . 上面的$name是: $name = $gender = $email = "";

因此,无论$_POST的内容如何,您始终将空字符串传递给test_input并始终从中获取空字符串。 它应该是$name = test_input($_POST["name"]); . email 和性别字段相同: $email = test_input($email); -> $email = test_input($_POST['email']); $gender = test_input($gender); -> $gender = test_input($_POST['gender']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM