2017-02-23 9 views
1

Ich arbeite an einem kleinen Projekt für mich selbst mit PHP und MySQL.Formularvalidierung zeigt, dass Felder nicht ausgefüllt sind

Ich habe ein Registrierungsformular erstellt, das ich ausgefüllt habe, um zu testen, ob es funktioniert. Ich habe dem Formular eine Validierung hinzugefügt, um nach leeren Feldern zu suchen, aber selbst wenn ich Daten in jedes Feld eingabe, wird eine Warnung angezeigt, dass nicht alle Felder ausgefüllt sind, wenn sie eindeutig sind.

Unten ist mein Code:

<?php ob_start(); ?> 
<?php require_once ("php/init.php"); ?> 
<?php 
    $user = new User(); 
if (isset($_POST['submit'])) 
{ 
    $user_username = trim($_POST['username']); 
    $user_email = trim($_POST['email']); 
    $user_firstname = trim($_POST['firstName']); 
    $user_lastname = trim($_POST['lastName']); 
    $user_password = trim($_POST['password']); 
    $verifyPassword = trim($_POST['passwordV']); 
    $user_company = trim($_POST['company']); 

    $validEmail = preg_match('/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z.]{2,4}$/', $user_email); 

    if ($user_username == "" 
     or $user_email == "" 
     or $user_firstname == "" 
     or $user_lastname == "" 
     or $user_password == "" 
     or $verifyPassword == "" 
     or $user_company == "" 
    ) 
    { 
     $message = "You have not completed all the required fields, please try again."; 
     echo "<script type='text/javascript'>alert('$message');</script>"; 
    } 
    else 
    { 
     if ($validEmail) 
     { 
      if ($_POST['password'] != $_POST['passwordV']) 
      { 
       $message = "The passwords that you entered do not match, please try again."; 
       echo "<script type='text/javascript'>alert('$message');</script>"; 
      } 
      else 
      { 
       $userFound = User::locate($user_username); 

       if ($userFound) 
       { 
        $message = "The username entered is already being used, please Login or enter a username."; 
        echo "<script type='text/javascript'>alert('$message');</script>"; 
       } 
       else 
       { 
        $user_password = User::hash($user_password); 

        $user->user_username = $user_username; 
        $user->user_email = $user_email; 
        $user->user_firstname = $user_firstname; 
        $user->user_lastname = $user_lastname; 
        $user->user_password = $user_password; 
        $user->user_company= $user_company; 

        $user->insertUser(); 

        redirect("wait.php"); 
       } 
      } 
     } 
     else 
     { 
      $message = "The email address that was entered is not in the correct format"; 
      echo "<script type='text/javascript'>alert('$message');</script>"; 
     } 
    } 
} 
else 
{ 
    $user_username = ""; 
    $user_email = ""; 
    $user_firstname = ""; 
    $user_lastname = ""; 
    $user_password = ""; 
    $verifyPassword = ""; 
    $user_company = ""; 
} 

if (isset($_POST['back'])) 
{ 
    redirect('index.php'); 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>Register</title> 
    </head> 
    <body> 
     <div id="register"> 
      <p>Please enter the following details to register for an account.</p> 
      <p>All fields are required.</p> 
      <div class="input"> 
       <li> 
        <form action="" method="post"> 
         <p> 
          <label>Username:</label> 
          <input type="text" name="username"> 
         </p> 
         <p> 
          <label>Email Address:</label> 
          <input type="text" name="email"> 
         </p> 
         <p> 
          <label>First Name:</label> 
          <input type="text" name="firstName"> 
         </p> 
         <p> 
          <label>Last Name:</label> 
          <input type="text" name="lastName"> 
         </p> 
         <p> 
          <label>Password:</label> 
          <input type="password" name="password"> 
         </p> 
         <p> 
          <label>Re-Enter Password:</label> 
          <input type="password" name="passwordV"> 
         </p> 
         <p> 
          <label>Company:</label> 
          <input type="text" name="Company"> 
         </p> 
         </br> 
         <p><input type="submit" name="submit"></p> 
         </br> 
         <p><input type="submit" name="back" value="Back"></p> 
        </form> 
       </li> 
      </div> 
     </div> 
    </body> 
</html> 

Jede Hilfe wird sehr geschätzt, wie ich ein bisschen stecken bin.

+0

Nicht herausspringen ... Können Sie den 'if' Block 'var_dump' wo Sie nach leeren suchen? Offensichtlich ist einer von diesen leer ... traue nicht dem Dump von $ _POST ... schau genau, was dein Code gerade auswertet. – ficuscr

Antwort

1

<input type="text" name="Company"> Beachten Sie die Hauptstadt 'C'. Der Code sucht jedoch nach "Firma".

var_dump ist dein Freund!

Ich würde empfehlen, sehr konsistent zu werden, wie Sie Variablen und dergleichen schreiben. Ich persönlich würde auch versuchen, Ihren Code-Stil bis zum Einzug zu ändern. Aber seien Sie auf jeden Fall sehr streng, wenn Sie Dinge benennen.

+0

danke für die Information, die funktioniert hat. Danke auch für den Hinweis zu meinem Code, ich bin noch ziemlich neu dazu. –

1

Überprüfen Sie die Namen der Felder $ _POST, wenn sie in form identisch sind :).

Verwandte Themen