2016-06-28 9 views
-2

Ich lerne php und mysql und versuche, ein Formular mit einer Registrierung und Login-Seiten zu erstellen, aber ich habe Probleme, das Registrierungsformular zu erhalten, um Daten in meine Datenbank zu schreiben. Ich bekomme keine Fehler bezüglich der Verbindung zur Datenbank, aber meine Tabellen bleiben leer, wenn ich versuche, Daten zu posten. Ich erhalte den FehlerRegistrierungsformular mit PHP und MySQL

'Bei der Registrierung ist ein Fehler aufgetreten. Bitte versuche es später erneut.

.

Jede Hilfe wird sehr geschätzt.

<?php 
//signup.php 
include 'connect.php'; 

echo '<h2>Register </h2>'; 
if($_SERVER['REQUEST_METHOD'] != 'POST') 
{ 
    /*the form hasn't been posted yet, display it 
     note that the action="" will cause the form to post to the same page it is on */ 
    echo '<form method="post" action=""> 
     Username: <input type="text" name="Username" /> 
     Password: <input type="password" name="Password"> 
     Confirm Password: <input type="password" name="Confirm"> 

     <input type="submit" value="Submit" /> 
    </form>'; 

    } 
else 
{ 
    /* so, the form has been posted, we'll process the data in three steps: 
     1. Check the data 
     2. Let the user refill the wrong fields (if necessary) 
     3. Save the data 
    */ 
    $errors = array(); /* declare the array for later use */ 

    if(isset($_POST['Username'])) 
    { 
     //the user name exists 
     //if(!ctype_alnum($_POST['Username'])) 
     if($_POST['Username'] == ['Username']) 
     { 
      $errors[] = 'The username is already in use.'; 
     } 

     } 
    else 
    { 
     $errors[] = 'The username field must not be empty.'; 
    } 

    if(isset($_POST['Password'])) 
    { 
     if($_POST['Password'] != $_POST['Confirm']) 
     { 
      $errors[] = 'The two passwords did not match.'; 
     } 
    } 
    else 
    { 
     $errors[] = 'The password field cannot be empty.'; 
    } 

    if(!empty($errors)) /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/ 
    { 
     echo 'Uh-oh.. a couple of fields are not filled in correctly..'; 
     echo '<ul>'; 
     foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */ 
     { 
      echo '<li>' . $value . '</li>'; /* this generates a nice error list */ 
     } 
     echo '</ul>'; 
    } 
    else 
    { 
     //the form has been posted without errors, so save it 
     //notice the use of mysql_real_escape_string, keep everything safe! 
     //also notice the sha1 function which hashes the password 
     $sql = "INSERT INTO 
        Users(Username, Password) 
       VALUES('" . mysql_real_escape_string($_POST['Username']) . "', 
         '" . md5($_POST['Password']) . "', 
         NOW(), 
         0)"; 

     $result = mysql_query($sql); 
     if(!$result) 
     { 
      //something went wrong, display the error 
      echo 'Something went wrong while registering. Please try again later.'; 
      //echo mysql_error(); //debugging purposes, uncomment when needed 
     } 
     else 
     { 
     header ("location: index.htm"); //redirects to Index Page 


     } 
    } 
} 

?> 

danke

+0

versuchen Sie, Abfrage manuell einfügen – LOKESH

+2

Simple: Sie sind nicht auf Fehler überprüfen und Lord weiß nur, was ist innerhalb 'connect.php '. –

+2

Sie sagen das Skript nur in Benutzer (Benutzername, Passwort) einzufügen, aber Sie analysieren auch zwei weitere Werte NOW() und 0) – b0ne

Antwort

1

bereits. Ich habe wieder hinzugefügt Zecken auf die Users Tabellenfelder

$username = mysql_real_escape_string($_POST['Username']); 
    $password = md5($_POST['Password']); 


    $sql= "INSERT INTO Users(`Username`,`Password`) VALUES('$username', '$password')"; 

Sie einfügen NOW() und 0. 2 zusätzliche Werte

Hinweis der erste Schritt eine SQL-Abfrage in das Debuggen wird es in MySQL läuft zuerst. Also versuchen Sie zuerst die SQL-Anweisung in MySQL zuerst mit Dummy-Werten für Username und Password und sehen, ob es funktioniert

+0

Danke Kev, das hat funktioniert und ich kann jetzt vorwärts gehen! – DarkKnight1203

+0

Wie kann ich den Code erhalten, um zu prüfen, ob ein Benutzername existiert? Ist es besser, mysqli oder php zu verwenden? – DarkKnight1203

+0

Ich würde Ihnen Benutzer mysqli und nicht mysql von Anfang an vorschlagen. Um zu überprüfen, ob ein Benutzer existiert, verwenden Sie die mysql-Anweisung 'SELECT COUNT (user_id) FROM Benutzer WHERE' Benutzername' = '$ username'' Wenn das Ergebnis größer als 0 ist, existiert ein Benutzer sonst, wenn result 0 ist, wird kein Benutzer beendet.Eigentlich wäre die korrekte Logik, wenn es einen Benutzer mit diesem Benutzernamen gibt, dann sollte das Ergebnis 1 sein und nicht mehr – theTypan