Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySQL Login

Einklappen

Neue Werbung 2019

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

  • [Erledigt] MySQL Login

    Ich habe mir hier ein ganz einfaches Login-Script mit MySQL geschrieben.
    Das Registrieren funktioniert wunderbar, aber beim einloggen gibt es immer eine Fehlermeldung.(Benutzername und/oder Passwort waren falsch, s. u.)
    login.php:
    PHP-Code:
    <?php
    session_start
    ();
    ?>

    <?php
    $verbindung 
    mysql_connect("host""user********" "************")
    or die(
    "Verbindung zur Datenbank konnte nicht hergestellt werden");
    mysql_select_db("dbmain") or die ("Datenbank konnte nicht ausgewählt werden");

    $username $_POST["username"];
    $passwort md5($_POST["password"]);

    $abfrage "SELECT username, password, email FROM login4 WHERE username LIKE '$username' LIMIT 1";
    $ergebnis mysql_query($abfrage);
    $row mysql_fetch_object($ergebnis);

    if(
    $row->passwort == $passwort)
        {
        
    $_SESSION["username"] = $username;
        echo 
    "Login erfolgreich. <br> <a href=\"insite.php\">Geschützer Bereich</a>";
        }
    else
        {
        echo 
    "Benutzername und/oder Passwort waren falsch. <a href=\"index.html\">Login</a>";
        }

    ?>
    register.php:
    PHP-Code:
    <?php
    $verbindung 
    mysql_connect("host""user********" "**************")
    or die(
    "Verbindung zur Datenbank konnte nicht hergestellt werden");

    mysql_select_db("dbmain") or die ("Datenbank konnte nicht ausgewählt werden"); 
    $username $_POST["username"];
    $passwort $_POST["passwort"];
    $passwort2 $_POST["passwort2"];
    $email $_POST['email'];

    if(
    $passwort != $passwort2 OR $username == "" OR $passwort == "" OR $email == "")
        {
        echo 
    "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>";
        exit;
        }
    $passwort md5($passwort);

    $result mysql_query("SELECT id FROM login4 WHERE username LIKE '$username'");
    $menge mysql_num_rows($result);

    if(
    $menge == 0)
        {
        
    $eintrag "INSERT INTO login4 (username, password, email) VALUES ('$username', '$passwort', '$email')";
        
    $eintragen mysql_query($eintrag);

        if(
    $eintragen == true)
            {
            echo 
    "Benutzername <b>$username</b> wurde erstellt. <a href=\"index.html\">Login</a>";
            }
        else
            {
            echo 
    "Fehler beim Speichern des Benutzernames. <a href=\"register.html\">Zurück</a>";
            }


        }

    else
        {
        echo 
    "Benutzername schon vorhanden. <a href=\"register.html\">Zurück</a>";
        }
    ?>
    Ich vermute, es liegt an der email, die Eingetragen, aber nicht abgerufen wird.

    Und bitte keine Antworten von wegen "md5 ist unsicher" oder "die email wurde nicht verifiziert". Ich bin mir einer Menge Sicherheitsmängel bewusst.

    Vielen Dank schon im vorraus,

    F_2801


  • #2
    Passwortfeld kleiner als 32 Zeichen?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Wieso Like?

      Gib einfach mal beide Passwortvariablen aus. Dann siehst Du doch warum die ungleich sind?!?! Verstehe jetzt das Problem nicht.
      * * * * COMMODORE C64 BASIC V2 * * * *
      64K RAM SYSTEM 38911 BASIC BYTES FREE
      READY

      Kommentar


      • #4
        Das Passwortfeld in der MySQL-Tabelle ist genau 32 Zeichen lang und hat das Format VARCHAR.
        Die Passwortvariablen sind gleich, das ist das Problem.

        Kommentar


        • #5
          PHP-Code:
          if($row->passwort == $passwort


          Diese Zeile lügt nicht.
          Alles genau prüfen. Da ist was ungleich.

          * * * * COMMODORE C64 BASIC V2 * * * *
          64K RAM SYSTEM 38911 BASIC BYTES FREE
          READY

          Kommentar


          • #6
            PHP-Code:
            $row->passwort 
            Code:
            SELECT ... password
            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

            Kommentar


            • #7
              Hallo,

              was machst du denn da bitte für schräge Sachen?

              - Ein Login macht man gegen Abfrage eines Usernamens / Email und eines Passwortes, du fragst nur gegen den Usernamen ab.

              - Username und Passwort werden nach exakter Werteübergabe geprüft und nicht nach LIKE.

              - Deine Abfrage ist einen Scheunentor für SQL - Injection

              - Du verwendest die veraltete MYSQL Extension, verwende stattdessen PDO oder MySqli.

              - Du speicherst nur den Usernamen in die Session, aber nicht die User ID.

              Beim Debugging würde dir, falls du keinen IDE Debugger wie XDebug nutzt, ein var_dump($_POST) helfen um zu sehen wie die Werte ankommen.
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar


              • #8
                Oh.. Tatsächlich. das habe ich völlig übersehen.

                Kommentar


                • #9
                  Dass das Ganze nicht sicher ist, war mir von vorneherein klar.
                  siehe:

                  Zitat von F_2801 Beitrag anzeigen
                  Und bitte keine Antworten von wegen "md5 ist unsicher" oder "die email wurde nicht verifiziert". Ich bin mir einer Menge Sicherheitsmängel bewusst.
                  F_2801

                  Kommentar

                  Lädt...
                  X