我刚刚开始使用PHP,我一直在尝试验证HTML表单,然后将表单数据发布到另一页上,出于某种原因,这似乎并不想要工作。问题是,当点击提交时,如果没有错误,页面会刷新。下面是代码片段:PHP表单数据提交后不会发布
<?php
$nameErr = $surnameErr = " ";
$name = $surname = " ";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$valid = 0;
if (empty($_POST["name"])) {
$nameErr = "Name is required";
$valid++;
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["surname"])) {
$surnameErr = "Surname is required";
$valid++;
} else {
$surname = test_input($_POST["surname"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$surname)) {
$surnameErr = "Only letters and white space allowed";
}
}
if($valid == 0){
header('LOCATION: page2.php');
exit();
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
这里是HTML
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<div class="label1">
<label>First Name</label>
<input type="text" name="name" id="name" placeholder="John" value="<?php echo $name;?>" onblur="validateName('name')">
<label>Surname</label>
<input type="text" name="surname" id="surname" placeholder="Smith" value="<?php echo $surname;?>" onblur="validateSurname('surname')"> <br />
<input type="submit" name="submit" value="Submit">
</div>
</form>
使page2.php
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your surname is: <?php echo $_POST["surname"]; ?>
</body>
</html>
你可以做的是改变形式行动“使page2.php”的职位是使用。并将您的php代码转移到page2.php – rapidoodle 2014-11-22 02:19:04
@Ralfh将表单动作更改为“page2.php”发布数据,但不验证表单,并将验证代码转移到“page2.php”完全杀死代码。 – SublimeTheMan 2014-11-22 02:39:35
试着改变这个($ _SERVER [“REQUEST_METHOD”] ==“POST”)到这个(isset($ _ POST ['submit'])) – rapidoodle 2014-11-22 02:47:08