[英]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.