Я не уверен, почему после отправки моей формы ничего не отображается. Я думаю, что я почти полностью понимаю валидацию формы 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>
test_input
другом месте?