表单处理在PHP中是如何工作的?

juud5qan  于 2022-11-21  发布在  PHP
关注(0)|答案(1)|浏览(94)

我正在通过w3schools学习PHP。我对页面的执行流程有点困惑。我将附上一个来自w3schools的代码示例。

<!DOCTYPE HTML>  
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>  

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }
  
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
  }
    
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }

  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }

  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Name: <input type="text" name="name">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  E-mail: <input type="text" name="email">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  Website: <input type="text" name="website">
  <span class="error"><?php echo $websiteErr;?></span>
  <br><br>
  Comment: <textarea name="comment" rows="5" cols="40"></textarea>
  <br><br>
  Gender:
  <input type="radio" name="gender" value="female">Female
  <input type="radio" name="gender" value="male">Male
  <input type="radio" name="gender" value="other">Other
  <span class="error">* <?php echo $genderErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>

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

</body>
</html>

有没有人能解释一下这个表单处理的执行流程。浏览器不能运行php脚本。在这个例子中,超级全局$_SERVER[“PHP_SELF”]用来引用同一个html页面。当我们试图提交空字段的页面时,它会在屏幕上显示错误信息。这是由于php变量在提交后得到了错误值。我认为在触发提交按钮后。这个页面使用POST方法向服务器中的同一个页面发出请求,在服务器中我们使用superglobal $_POST[“name”],[“email”]等访问同一个表单值,最后服务器抛出新的html页面。我说的对吗?或者说这个验证完全发生在前端。

vof42yt1

vof42yt11#

在php中,验证完全在服务器中进行。
前端仅在涉及JavaScript或添加字段属性(如required、min、max)时进行验证。
我认为w3是一个很好的源代码来检查小代码片段。但它不是一个很好的源代码来学习

相关问题