Probleme mit einfacher Login-Funktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit einfacher Login-Funktion

    Hallo zusammen,
    ich bin neu hier im Forum und auch noch recht frisch im Umgang mit PHP und MySQL. Mein Name ist Lucas, und ich lerne PHP aktuell nebenbei, um eine kleine Website für ein Hobbyprojekt zu bauen.
    Ich versuche gerade, ein einfaches Login-System umzusetzen – Benutzername und Passwort werden mit einer MySQL-Datenbank verglichen. Allerdings klappt das Einloggen nicht, obwohl ich sicher bin, dass Benutzername und Passwort korrekt sind. Es kommt einfach immer die Meldung „Login fehlgeschlagen“.
    Hier ein Auszug aus meinem Code:
    Code:
    <?php
    $conn = new mysqli("localhost", "root", "", "testdb");
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $username = $_POST["username"];
        $password = $_POST["password"];
    
        $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
        $result = $conn->query($sql);
    
        if ($result->num_rows == 1) {
            echo "Login erfolgreich!";
        } else {
            echo "Login fehlgeschlagen.";
        }
    }
    ?>
    ​
    ​Ich habe ein paar Fragen dazu:
    Gibt es einen offensichtlichen Fehler in meinem Code?
    Sollte ich vielleicht mysqli_real_escape_string() oder prepared statements verwenden? Wenn ja, wie?
    Kann ich das Passwort irgendwie sicherer speichern und abfragen?
    Ich bin für jede Hilfe dankbar – besonders, wenn jemand den Code ein bisschen verbessern oder erklären kann, woran es hakt.
    Viele Grüße
    Lucas​

  • #2
    Zuerst einmal: du bist im falschen Board, das gehört eigentlich in das PHP-Board

    Gibt es einen offensichtlichen Fehler in meinem Code?
    Wenn es nicht funktioniert, dann wird das wohl so sein.

    Sollte ich vielleicht mysqli_real_escape_string() oder prepared statements verwenden?
    Auf jeden Fall. Ob mysqli_real_escape_string oder Prepared Statements ist eigentlich egal, wichtig ist, dass du eins davon benutzt.

    Wenn ja, wie?
    Das steht in der Doku, siehe https://www.php.net/manual/en/mysqli...ape-string.php

    Außerdem solltest du mögliche Fehler abfangen:
    PHP-Code:
    $conn = new mysqli("localhost""root""""testdb");

    if ($conn->connect_errno)
      die(
    "Failed to connect to MySQL: " .   $conn->connect_error);
    ​ 
    PHP-Code:
    $result $conn->query($sql)
           or die (
    "Error: " $conn->error​); 

    Kommentar

    Lädt...
    X