我剛剛開始使用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