【发布时间】:2014-11-22 01:26:47
【问题描述】:
我刚开始使用 PHP,我一直在尝试验证 HTML 表单,然后将表单的数据发布到另一个页面上,由于某种原因,这似乎不起作用。问题是,当点击提交时,如果没有错误,页面只会刷新。以下是代码的sn-ps:
<?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
-
@Ralfh 将表单操作更改为“page2.php”会发布数据但不验证表单,并将验证代码传输到“page2.php”会完全杀死代码。
-
尝试把这个 ($_SERVER["REQUEST_METHOD"] == "POST") 改成这个 (isset($_POST['submit']))
-
问题还在继续,哥们
标签: php html forms validation post