Problem bei der Übergabe von Daten

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

  • Problem bei der Übergabe von Daten

    Ich arbeite grad an einem Loginscript und wundere mich warum ich mich nicht einloggen kann wenn ich das richtige Passwort eingebe. Es kommt immer der Fehler die Benutzerdaten wären falsch.

    daraufhin habe ich mir die Kennwörter einmal aus der Datenbank und das eingegebene ausgeben lassen. Beide Md5 verschlüsselt.

    Dabei entdeckte ich das der MD5 string des eingegebenen Kennworts länger ist als der des Kennwortes in der Datenbank.
    Ich liess mir also das eigegebene Kennwort normal ausgeben und stellte fest das am Kennwort noch eine 0 hintendranhing,

    Ich habe daraufhin andere Wörter als Kennwort eingegeben und mir normal ausgeben lassen und überall hing die 0 am ende an.

    Warum.

    Hier der Code:

    index.php Auszug:
    Code:
    <?php
    
                 if (isset ($_REQUEST["fehler"]))
    
                 {
    
                    echo "Die Zugangsdaten waren ungültig.";
    
                 }
    
            ?>
    
            <form action="login.php" method="post">
    
            <table border="0">
    
                   <tr>
    
                       <th>Name:</th>
    
                       <td><input type="text" name="name" size="20"></td>
    
                   </tr>
    
                   <tr>
    
                       <th>Kennwort:</th>
    
                       <td> <input type="password" name="pwd" size="20"><td>
    
                       <td><input type="submit" value=" Login "></td>
    
                   </tr>
    
            </table
    
    
    
    
    
      ></form>
    hier nun die ausgabe auf der Login.php:

    Code:
    <?php
    // Session starten
    session_start ();
    
    // Datenbankverbindung aufbauen
    $connectionid = mysql_connect ("localhost", "user", "passwort");
    if (!mysql_select_db ("datenbank", $connectionid))
    {
      die ("Keine Verbindung zur Datenbank");
    }
    
    $sql = "SELECT ".
        "Id, Nickname, Email, Kennwort ".
      "FROM ".
        "benutzerdaten ".
      "WHERE ".
        "(Nickname like '".$_REQUEST["name"]."')";
    $result = mysql_query ($sql) or die(mysql_error());
    
    
    if (mysql_num_rows ($result) > 0)
    {
      // Benutzerdaten in ein Array auslesen.
      $data = mysql_fetch_array ($result);
      $data1= md5 ($_REQUEST["pwd"]);
      echo $data1 . "\n\n";
      echo $_REQUEST["pwd"];
      echo mysql_errno() . ": " . mysql_error() . "\n";
      // Sessionvariablen erstellen und registrieren
      $_SESSION["user_id"] = $data["Id"];
      $_SESSION["user_nickname"] = $data["Nickname"];
      
    
      header ("Location: index2.php");
    }
    else
    {
      header ("Location: index.php?fehler=1");
    }
    ?>

  • #2
    die 0 kann aber eigentlich keinen einfluss auf die länge haben.

    wie lang sind die beiden denn?

    Kommentar


    • #3
      Naja hat sie schon.

      Gebe ich als Passwort bsp. sonne ein kommt bei der ausgabe sonne0 raus

      und die 0 übersetzt der auch MD5 technisch
      das heisst wenn das die strings stimmen nicht überein bei einem steht das MD5 string für Sonne und beim eingegebenen der MD5 String für sonne0

      Kommentar


      • #4
        achso, die md5 stings sind aber beide gleich lang? das kam bei mir nicht ganz an.

        print_r($_POST); gibt dir was aus?

        Änder das Passwortfeld auch mal in ein normales textfeld um ggf Fehleingaben zu vermeiden.

        Kommentar


        • #5
          nein die strings sind nicht gleich lang. der Sting des eingegebenen Passwords wo die 0 dran hängt ist länger als der in der Datenbank vorhandene String

          und wo muss ich den Post befehl einfügen? ind ie login.php oder die index?

          Kommentar


          • #6
            Ein MD5 Hash sollte übrigens immer 32 Zeichen haben.

            machs mal ganz am anfang von der login.php

            Kommentar


            • #7
              das zeigt an:

              ich habe eingegeben ich und sonne

              Array ( [name] => ich [pwd] => sonne )

              Kommentar


              • #8
                das sieht doch gut aus.

                gleiches mal mit $_REQUEST. (lass das print_r($_POST) aber drin)

                und dann debug mal weiter, bis du die Stelle findest an der die 0 auftaucht.

                Kommentar


                • #9
                  Array ( [name] => Ich [pwd] => sonne ) Array ( [name] => Ich [pwd] => sonne [PHPSESSID] => 73ba882a24940ce6082bc06bbec87997 )


                  also auch da keine 0

                  Kommentar


                  • #10
                    ja, weiter debuggen hab ich doch gesagt. ich muss doch nicht alles vorkauen, oder?

                    du hast eben geschrieben, dass an einer bestimmten stelle eine 0 auftaucht.

                    verfolge die variablen bis dahin.

                    Kommentar


                    • #11
                      Naja die 0 tauchte an der stelle auf wo ich
                      echo $_REQUEST["pwd"];
                      ausgebe tats aber eben nich.


                      Hier mal 2 MD5 strings:

                      c70bedc16e6fba4bb93de084b98e09 c70bedc16e6fba4bb93de084b98e09ad

                      ersterer ist der aus der Datenbank
                      Zweiterer ist: md5( $_REQUEST["pwd"]);


                      Ich weiss echt nimmer wo ich noch suchen soll

                      Kommentar


                      • #12
                        Dann ist evtl dein varchar Feld in der DB zu schmal....
                        Und MySQL schneidet deinen Wert ab
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          Das ein md5 Sting 32 Zeichen hat, hatte ich eigentlich schon erwähnt. Wieso arbeitest du mit korrupten daten?

                          Kommentar


                          • #14
                            Ich weiss es doch nicht
                            Ich bin wie das forums chon sagt Anfänger
                            Und habe das Loginscript mit Hilfe eines Tutorials erstellt weil ich dringend ein Login brauche.

                            Die Registrierung eines Benutzers funktioniert auch und das eintragen in eine Datenbank nur das Login eben nicht

                            Kommentar


                            • #15
                              Na, das eintragen klappt offensichtlich nicht!

                              Hinweise haben wir dir jetzt genug und doppelt gegeben. Bitte überprüfe diese.

                              Ab ins phpMyAdmin und nachgeguckt!

                              Kommentar

                              Lädt...
                              X