[PHP] Login Problem

  • Guten Abend,


    ich benötige Hilfe beim Loginsystem.
    In meiner Datenbank sind 3 User eingetragen, allerdings kann man sich mit keinem der Benutzer anmelden.
    Wenn man sich Registriert kann man sich anmelden allerdings nur solange bis ein neuer sich registriert...



    Ich kenne mich einigermaßen mit PHP aus, allerdings finde ich keinen Fehler warum man sich nicht anmelden kann.


    Ich vermute das in dieser Zeile der Fehler liegt...

    Code
    if(mysql_num_rows($query) == 1)


    Bitte um Hilfe :)


    Lg
    J0a9

  • Wenn in der Datenbank 3 Accounts sind, dann ist bei der Query "mysql_num_rows" natürlich 3 und nicht 1.

    PHP
    $query = mysql_query("SELECT * FROM account");
    if(mysql_num_rows($query) == 1)


    Wenn dann mach es so:



    PHP
    mysql_query("SELECT * FROM account WHERE Name = '".$a_nickname."' LIMIT 1;");
  • Die ganze Abfrage ist verkehrt. mysql_num_rows (Standartmäßig in PHP, Veraltet) zählt die vorhandenen/gefundenen Datensätze der Select-Abfrage.


    Am besten so:


    PHP
    $query = mysql_query("SELECT * FROM account WHERE Name = $adminnickname");
    $row = mysql_fetch_assoc($query);
    $pw = $row['Passwort'];
    if(mysql_num_rows($query) < 1 || $pw != $adminpasswort) {
       echo 'Die Zugangsdaten sind falsch';
    } else {
       echo 'Du bist eingeloggt, willkommrn '.Ucfirst($adminnickname);
    }


    Dann musst du nur noch Cookie oder Session einbinden damit der Benutzer eingeloggt bleibt, am besten die Passwörter verschlüsseln (Ich verwende Whirlpool immer als Verschlüsselung) und fertig :)


    Liebe Grüße
    palwal

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Wenn in der Datenbank 3 Accounts sind, dann ist bei der Query "mysql_num_rows" natürlich 3 und nicht 1.

    PHP
    $query = mysql_query("SELECT * FROM account");
    if(mysql_num_rows($query) == 1)


    Wenn dann mach es so:



    PHP
    mysql_query("SELECT * FROM account WHERE Name = '".$a_nickname."' LIMIT 1;");


    Nur als Tipp: LIMIT 1 wäre unnötig wenn die Spalte Name in der Datenbank als UNIQUE hinterlegt ist. Dadurch kann der Benutzername nur einmal so existieren. ;)