Einfaches Loginsystem funktioniert nicht

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

  • Einfaches Loginsystem funktioniert nicht

    Also, ich habe mir mal ein gaaaannz einfacher Loginsystem gebastelt aber irgendwie funktioniert es nicht so wie ich das will. Es komm immer volgender Fehler:

    Quellcode

    1. Parse error: syntax error, unexpected $end in /srv/www/httpd/phost/u/de/pytalhost/untergrund-crew/web/login.php on line 59


    Code:

    Quellcode

    1. <form action='login.php' method='POST'>
    2. <input type='text' name='username' />
    3. <input type='text' name='passwort' />
    4. </form>
    5. <?php
    6. if (isset($_POST['username']) AND isset($_POST['passwort'])) {
    7. $tempn = $_POST['username'];
    8. $tempp = $_POST['passwort'];
    9. $namel = False;
    10. $passl = False;
    11. $abfrage = "SELECT username, passwort FROM users";
    12. $result = mysql_query($abfrage);
    13. while($row = mysql_fetsch_object($result)) {
    14. if ($row->username == $tempn) {
    15. $namel = True;
    16. }
    17. if ($row->passwort == $tempp) {
    18. $passl = True;
    19. }
    20. if ($namel == True AND $passl == True) {
    21. $LoggedIn = True;
    22. $tempn = $_SESSION['user'];
    23. echo "<div class='good'>Hallo ".$_SESSION['user']."! Du wurdest ervollgreich eingeloggt</div>";
    24. }
    25. else {
    26. echo "<div class='bad'>Du hast ein falsches Passwort oder einen Falschen Usernamen eingegeben</div>";
    27. }
    28. }
    29. ?>
    Alles anzeigen


    Achja, die Zeile 59 wäre das </html>.

    Danke im Voraus

    PS: Ich glaube ich werde echt langsam zu alt für so ein zeug, wenn ich nichtmal mehr ein sooo einfaches Loginsystem zusammen bekomme..
  • Quellcode

    1. $namel = False;
    2. $passl = False;
    3. $abfrage = "SELECT username, passwort FROM users";
    4. $result = mysql_query($abfrage);
    5. while($row = mysql_fetsch_object($result)) {
    6. if ($row->username == $tempn) {
    7. $namel = True;
    8. }
    9. if ($row->passwort == $tempp) {
    10. $passl = True;
    11. }
    12. if ($namel == True AND $passl == True) {
    13. $LoggedIn = True;
    14. $tempn = $_SESSION['user'];
    15. echo "<div class='good'>Hallo ".$_SESSION['user']."! Du wurdest ervollgreich eingeloggt</div>";
    16. }
    17. else {
    18. echo "<div class='bad'>Du hast ein falsches Passwort oder einen Falschen Usernamen eingegeben</div>";
    19. }
    20. }
    Alles anzeigen

    Korrigiert mich, wenn ich falsch liege, aber aktuell werden Nutzername und Passwort unabhängig geprüft.

    Es könnte also passieren, dass zwar der Nutzername korrekt aber das Passwort falsch ist. Da $namel und
    $passl pro Durchlauf nicht neu initialisiert werden, ist $namel bei allen weiteren Durchläufen noch immer auf true gesetzt.
    Hat nun ein anderer Benutzer ein passendes Passwort, ist der Login-Versuch erfolgreich, obwohl Nutzername und
    Passwort nicht vom selben Benutzer stammen.

    Die Variablen $namel und $passl müssten also pro Durchlauf neu und nicht vor der Schleife initialisiert werden,
    oder die Nutzer-/ Passwort-Überprüfung in einer Abfrage bzw. direkt durch den SQL-Server geschehen.

    Desweiteren wird in diesem Fall für jeden weiteren Benutzer in der Datenbank der else-Bereich durchlaufen und die
    Meldung für den fehlerhaften Login ausgegeben.