Проверка формы регистрации с использованием PHP

1

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

?> 
  • 0
    Вы определяете функцию test_input другом месте?
  • 0
    Нет, просто внизу @kittykittybangbang
Показать ещё 2 комментария
Теги:
validation
forms

1 ответ

1
Лучший ответ

Это может помочь упростить некоторые ваши имена скриптов и форм. У вас много повторений, которые могут быть смягчены циклом:

Простой пример проверки:

<?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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню