Formular-eingaben-prüfung wird nicht beachtet

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Formular-eingaben-prüfung wird nicht beachtet

    Hallo zusammen,

    nachdem ich die memberlist jetzt einigermaßen in griff bekommen habe, arbeite ich am Registrier-formular, da es, glaub ich, nciht schlau wäre, alle in's phpmyadmin reinzulassen:D

    Hier ist mal der code:

    Quellcode

    1. <?php
    2. echo '<div id="h1">Registration</div><br /><br />';
    3. $send = $_POST['s'];
    4. if (($send != "1") OR ($error != ""))
    5. {
    6. if ($error != "")
    7. {
    8. echo "Fehler:<br />" . $error . '<br /><br />';
    9. }
    10. echo 'Bitte füllen sie folgende Felder aus, um sich zu Registrieren.<br />';
    11. echo '<form action="" method="post">';
    12. echo '<table width=90%>';
    13. echo '<tr>';
    14. echo '<td>Username:</td>';
    15. echo '<td><input type="text" name="username"></td>';
    16. echo '</tr><tr>';
    17. echo '<td>E-Mail-Adresse:</td>';
    18. echo '<td><input type="text" name="email_adresse"></td>';
    19. echo '</tr><tr>';
    20. echo '<td>Passwort:</td>';
    21. echo '<td><input type="password" name="passwort1"></td>';
    22. echo '</tr><tr>';
    23. echo '<td>Passwort wiederholen:</td>';
    24. echo '<td><input type="password" name="passwort2"></td>';
    25. echo '</tr><tr>';
    26. echo '<td>&nbsp;</td>';
    27. echo '<td><input type="hidden" value="1" name="s"><input type="submit" value="Registrieren" name="submit">';
    28. echo '</table>';
    29. echo '</form>';
    30. }
    31. $register_ip = $_SERVER['REMOTE_ADDR'];
    32. $mitglied_seid = date("d.m.Y H:i");
    33. $username = $_POST['username'];
    34. $email_adresse = $_POST['email_adresse'];
    35. $passwort1 = md5($_POST['passwort1']);
    36. $passwort2 = md5($_POST['passwort2']);
    37. if ($send == "1")
    38. {
    39. $abfrage = "SELECT e_mail_adresse FROM user WHERE e_mail_adresse = '$email_adresse'";
    40. $ergebnis = mysql_query($abfrage);
    41. $row = mysql_fetch_object($ergebnis);
    42. $abfrag = "SELECT username FROM user WHERE username = '$username'";
    43. $ergeb = mysql_query($abfrag);
    44. $ro = mysql_fetch_object($ergeb);
    45. if (($username == "") OR ($email_adresse == "") OR ($passwort1 == "") OR ($passwort2 == ""))
    46. {
    47. $error = "Bitte füllen sie alle Felder aus!";
    48. }
    49. if ($passwort1 != $passwort2)
    50. {
    51. if ($error != "")
    52. {
    53. $error = $error . "<br />Die Passwörter stimmen nicht überein.";
    54. }
    55. else
    56. {
    57. $error = "Die Passwörter stimmen nicht überein.";
    58. }
    59. }
    60. if ($username == $ro->username)
    61. {
    62. if ($error != "")
    63. {
    64. $error = $error . "<br />Username bereits vergeben.";
    65. }
    66. else
    67. {
    68. $error = "Username ist bereits vergeben.";
    69. }
    70. }
    71. if ($email_adresse == $row->e_mail_adresse)
    72. {
    73. if ($error != "")
    74. {
    75. $error = $error . "E-Mail-Adresse ist bereits registriert.";
    76. }
    77. else
    78. {
    79. $error = "E-Mail-Adresse ist bereits registriert.";
    80. }
    81. }
    82. else
    83. {
    84. $eintragen = "
    85. INSERT INTO `user`
    86. (`id` , `username` , `e_mail_adresse` , `passwort`, `mitglied_seid`, `register_ip`)
    87. VALUES
    88. (NULL , '$username' , '$email_adresse' , '$passwort1' , '$mitglied_seid' , '$register_ip')";
    89. $link = mysql_query($eintragen) or die("Anfrage fehlgeschlagen: " . mysql_error());
    90. if ($link = TRUE)
    91. {
    92. echo '<center>Sie haben sich erfolgreich registriert.<br /><a href="login.php">Klicken sie hier, um sich einzuloggen</a></center>';
    93. }
    94. else
    95. {
    96. echo '<center>Bei der Registrierung ist ein Fehler aufgetreten.<br />Bitte versuchen Sie es noch einmal.<br />Sollte dieser Fehler weiterhin auftreten, konntaktieren sie bitte den Foren- oder Absoluten Administraor.</center>';
    97. }
    98. }
    99. }
    100. ?>
    Alles anzeigen


    Wenn dieser code jetzt benutzt wird, wird der user einfach eingetragen und die prüfungen beachtet der code gar nicht. (ich denke, die eintrags-seite ist nicht von belang, oder?).

    Ich hoffe, ihr könnt mir mal wiede rhelfen.

    LG

    Fipsi
  • Hallo Fipsi,

    ich habe mal schnell überflogen. Ich bin zwar nicht der Vollprofi, versuche trotzdem dir zu helfen, damit ich vielleicht auch noch was lernen kann ;).

    Quellcode

    1. <?php
    2. echo '<div id="h1">Registration</div><br /><br />';
    3. $send = $_POST['s'];
    4. if (($send != "1") OR ($error != ""))
    5. {
    6. if ($error != "")
    7. {
    8. echo "Fehler:<br />" . $error . '<br /><br />'; //
    9. }
    10. echo 'Bitte füllen sie folgende Felder aus, um sich zu Registrieren.<br />';
    11. ?>
    Alles anzeigen

    Die zweite If-Abfrage kannst du doch aus logischen Gründen weglassen. Oder nicht?

    Quellcode

    1. if ($send == "1")
    2. {
    3. $abfrage = "SELECT e_mail_adresse FROM user WHERE e_mail_adresse = '$email_adresse'";
    4. $ergebnis = mysql_query($abfrage);
    5. $row = mysql_fetch_object($ergebnis);
    6. $abfrag = "SELECT username FROM user WHERE username = '$username'";
    7. $ergeb = mysql_query($abfrag);
    8. $ro = mysql_fetch_object($ergeb);
    9. ...


    Wieso wieder eine If-Abfrage, packe es doch in die Else-Anweisung mit der if-Bedingung ($send != "1") von oben.

    Quellcode

    1. $username == $ro->username)

    Quellcode

    1. ($email_adresse == $row->e_mail_adresse)


    Mach mal bitte für mich var_dump($ro) oder var dump($row) und sag mir was es ausgibt?

    Bitte korrigiert mich wenn ich mit etwas falsch liege. :)

    Mit freundlichen Grüßen

    Sheldon
  • Okay tut mir leid. Scheint so, als hätte ich dich etwas verwirrt. :)
    Ich dachte ich würde dir einen Tipp für eine Denkrichtung geben, aber ich erklär dir es nun ausführlich:

    Quellcode

    1. $abfrag = "SELECT username FROM user WHERE username = '$username'";


    Dein SQL-Befehl, den du in die Variable $abfrage speicherst.

    Quellcode

    1. $ergeb = mysql_query($abfrag);


    Mysql_Query schickt eine Anfrage an die Datenbank mit deinem SQL-Befehl.

    Quellcode

    1. $ro = mysql_fetch_object($ergeb);


    Und hiermit versuchst du einen Rückantwort zu bekommen. Nennen wir es Rückgabewert. Der Rückgabewert wird wiederum in deiner Variable $ro gespeichert.

    So was nun? Irgendwie willst du ja mit dem Rückgabewert arbeiten. (Bei mysql_fetch_object wird eine Ergebniszeile zurückgeliefert)
    Du weißt aber nicht genau was mysql_fetch_object zurückliefert und gibst ERSTMAL es mit var_dump($ro) aus.

    Die Ausgabe von var_dump($ro) kannst du dann für deine if-Abfrage verwenden, wobei ich dir in deinen Script keine mysql_fetch_object empfehlen würde, sondern .._fetch_assoc(?)
    .._fetch_assoc gibt dir einen Rückgabewert von 0 oder 1 aus.

    In deinem Fall gilt, wenn die Emailadresse bereits vorhanden ist, gibt assoc dir "1" zurück. Ist die Emailadresse nicht vorhanden dann gibt dir assoc "0" zurück.

    Ich müsste dir jetzt genug geholfen haben. Probier erstmal ein wenig aus und wenn du dann immer noch nicht weiterkommst. Melde dich einfach nochmal.