2016-04-19 15 views
-2

Ich versuche, ein Benutzerregistrierungsformular mit PHP und MySQL zu erstellen. Wenn ich versuche, den Submit Button zu drücken, wird kein neuer Datensatz zu meiner Datenbank hinzugefügt. Die Datenbank ist funktional und hat mit anderen Formen gearbeitet.Warum funktioniert mein Benutzerregistrierungsformular nicht ordnungsgemäß?

HTML/FORM

<?php 
include 'header.php'; 
?> 
    <section> 
     <div class="form"> 
      <form action="signup.php" method="post"> 
       <h1> Sign Up!</h1> 

       <p>First name: 
        <input type="text" name="fName" maxlength="15" required pattern="^[a-zA-Z]{3,20}$" placeholder="Enter Name" /> 
       </p> 

       <p>Last name: 
        <input type="text" name="lName" maxlength="15" pattern="^[a-zA-Z]{3,20}$" required placeholder="Enter Last Name" /> 
       </p> 

       <p>Email: 
        <input type="email" name="email" maxlength="40" required placeholder="Enter Email" /> 
       </p> 

       <p>Username: 
        <input type="text" name="username" maxlength="20" ^[A-Za-z0-9_]{1,15}$ required placeholder="Enter Username" /> 
       </p> 

       <p>Password: 
        <input type="password" name="password" maxlength="20" pattern="(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$" required placeholder="Enter Password" /> 
       </p> 

       <p>Re-type Password: 
        <input type="password" name="password2" maxlength="20" pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$" required placeholder="Re-type Password" /> 
       </p> 

       <p> 
        <button type="submit" name="signupbutton"> Sign up </button> 
       </p> 
      </form> 
     </div> 
    </section> 

<div class="footerspecial"> 
    <?php 
include 'footer.php'; 
?> 
</div> 

PHP/SQL

<?php 

//have they submitted at least once? 
if(isset($POST['$password2'])){ 
    $fName = $_POST['fName']; 
    $lName = $_POST['lName']; 
    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $password2 = $_POST['password2']; 
    //do the passwords NOT match? 
     if ($password !== $password2) {//do string comparison here 
       echo'<h2>Error: passwrods don\'t match!</h2>'; 
       require ('registerform.php'); 
     } 
    else { 
      //does the username already exist? 
      $sql = mysql_query("SELECT * FROM users WHERE username=='$username'"); 
     if ($results=$con->query($sql)){ 
       echo'<h2>Error: username is already taken</h2>'; 
       require ('registerform.php'); 
     } 
     else { 

      $sql = mysql_query("SELECT * FROM users WHERE email=='$email'"); 
     if ($results=$con->query($sql)){ 
      echo'<h2>Error: email already used</h2>'; 
      require ('registerform.php'); 
      } 
      else { 
    // If the values are posted, insert them into the database. 
        $sql= "INSERT INTO users (fName, lName, email, username, password, password2) VALUES ('$fName', '$lName', '$email', '$username', '$password', $password2)"; 
        if (!$con->query($sql)){ 
         echo 'Error: coulndt do suff'; 
        } 
        else { 
         echo 'Account made'; 


        }//ENDS SUCCESSFUL INSURT 

      }//ENDS EMAIL VALIDATION 

     }//ENDS THE USERNAME VALIDATION 
    }//END PASSWORD VALIDATION 
} 
?> 

Bild von der Form nicht wirklich wissen, wenn sein hilfreich, aber ya'know

https://gyazo.com/418b86ecb5090604a1f229e1e94fe3bf

+0

Was passiert, wenn Sie drücken einreichen.? nicht aktualisieren Sie die Seite Haben Sie eine Fehlermeldung angezeigt –

+0

wenn ich Übermittle das Formular es bringt mich nur auf eine leere Seite, so dass ich verwirrt bin, wohin ich von hier gehe Ich arbeite seit 2 Tagen daran – cosmichero2025

+0

Leere Seite normalerweise mea Syntaxfehler in PHP-Code. –

Antwort

1

I Ich vermute hier, dass Ihre Datenbank keine password2 Spalte hat (scheint Art von sinnlos zu haben) so versuchen, in es einzufügen wird einen Fehler geben.

sollten Sie lesen über MySQLi error reporting

Auch error_reporting(-1); am Anfang Ihrer PHP-Datei PHP-Fehler zu zeigen, hinzufügen.

P.S. Ihr Code ist anfällig für SQL-Injection, Sie sollten prepared statements verwenden, um vor diesem zu schützen.

+0

Darf es zwei Jesters sein? http: // Stapelüberlauf.com/users/547981/jester –

0

Könnte mehrere Probleme haben, zuerst haben Sie nicht die einfachen Anführungszeichen um $ password2. Dies könnte zu einem fehlerhaften Einfügen führen.

VALUES ('$ fName', '$ lName', '$ E-Mail', '$ username', '$ password', $ password2) ";

Auch würde ich die SQL-Fehler echo ., wie Sie nicht tun sind, können Sie ganz einfach tun dies Testen Sie die if-Anweisung für einen echten kein falscher

   if ($con->query($sql)){ 
        //if true then runs your code; 
       } 
       else { 
        echo "Error: " . $sql . "<br>" . $con->error; // This will echo out any sql errors you may have 
       } 
+0

Ich fügte hinzu, die Dinge, die Sie vorgeschlagen, und es sagt, dass $ sql ist eine undefinierte Variable – cosmichero2025

+0

Oh vergessen, dass ...... krank arbeiten auf dieser rn – cosmichero2025

+0

Ich habe, dass eingerichtet und es funktioniert korrekt mit anderen Formen auf meiner Seite Diese Registrierung ist die einzige, die ich Probleme mit – cosmichero2025

Verwandte Themen