我不知道为什么提交表单后没有显示任何内容。我想我了解PHP表单验证的大部分,但我不确定我在哪里出错。我也有JS验证,但这是一个分配,所以我必须做这两个。
我的表单看起来像:
<?php include 'connect.php';?>
<form class="log-in-form" name="loginForm" action="sign-up-submit.php" method="post">
<p class="form-subtitle">Please create an account</p><br>
<input class="form-text" onfocus="this.placeholder = ''" type="text" placeholder="First Name" name="signupFirstName" id="signupFirstNameID"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="text" placeholder="Last Name" name="signupLastName" id="signupLastNameID"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="email" placeholder="Email Address" name="loginEmail" id="emailID" /><br>
<input class="form-text" onfocus="this.placeholder = ''" type="date" placeholder="Date of birthday" name="loginDate" id="dateID"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="password" placeholder="Password" name="loginPass" id="pwdID"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="password" placeholder="Verify Password" name="loginPassVerify" id="pwdVerifyID"/><br>
<input class="form-button" type="submit" value="Create Account" />
</form>
和我的表单验证看起来像
<?php
$firstNameError = $lastNameError = $emailError = $dateError = $passwordError = $passVerifyError = "";
$firstName = $lastName = $email = $date = $password = $passVerify = "";
if (isset($_POST["signupFirstName"])) {
$firstNameError = "The first name is required";
} else {
$firstName = test_input($_POST["signupFirstName"]);
echo ($firstName);
}
if (isset($_POST["signupLastName"])) {
$lastNameError = "The last name is required";
} else {
$lastName = test_input($_POST["signupLastName"]);
echo ($lastName);
}
if (isset($_POST["loginEmail"])) {
$emailError = "An email address is required";
} else {
$email = test_input($_POST["loginEmail"]);
echo ($email);
}
if (isset($_POST["loginDate"])) {
$dateError = "You must enter a date of birth";
} else {
$date = test_input($_POST["loginDate"]);
echo ($date);
}
if (isset($_POST["loginPass"])) {
$passwordError = "Password is required";
} else {
$password = test_input($_POST["loginPass"]);
echo ($password);
}
if (isset($_POST["loginPassVerify"])) {
$passVerifyError = "You must verify your password";
} else {
$passVerify = test_input($_POST["loginPassVerify"]);
echo ($passVerify);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
这可能有助于简化一些脚本和表单名称。你有很多重复,可以通过循环来减轻:
简单验证示例:
<?php
// Store your errors just in an array function because you could theoretically,
// in future, create a database-driven error system that would return
// an error code here based on a library of codes.
function error_code($key = false)
{
$error["fname"] = "The first name is required";
$error["lname"] = "The last name is required";
$error["email"] = "An email address is required";
$error["dob"] = "You must enter a date of birth";
$error["password"] = "Password is required";
$error["verify"] = "You must verify your password";
return (!empty($error[$key]))? $error[$key] : "Unknown Error.";
}
// I like to return false if empty, may or may not help you
function sanitize($data = false)
{
$data = trim($data);
$data = stripslashes($data);
// I personally like to turn quotes to special chars too
$data = htmlspecialchars($data,ENT_QUOTES);
return (!empty($data))? $data : false;
}
// Check that something has been submitted.
if(isset($_POST['fname'])) {
// Just loop through all your post values so you don't
// need so many if/else repetitions
foreach($_POST as $key => $value) {
// Will return some value or false
$value = sanitize($value);
// write to page if not false or else write an error code
echo ($value != false)? $value : error_code($key);
}
}
?>
形式:
<!-- I would suggest simplifying your id & name values, makes it a bit cleaner -->
<form class="log-in-form" name="loginForm" action="" method="post">
<p class="form-subtitle">Please create an account</p><br>
<input class="form-text" onfocus="this.placeholder = ''" type="text" placeholder="First Name" name="fname" id="fname" /><br>
<input class="form-text" onfocus="this.placeholder = ''" type="text" placeholder="Last Name" name="lname" id="lname"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="email" placeholder="Email Address" name="email" id="email" /><br>
<input class="form-text" onfocus="this.placeholder = ''" type="date" placeholder="Date of birthday" name="dob" id="dob"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="password" placeholder="Password" name="password" id="password"/><br>
<input class="form-text" onfocus="this.placeholder = ''" type="password" placeholder="Verify Password" name="verify" id="verify"/><br>
<input class="form-button" type="submit" value="Create Account" />
</form>