PHP liest falschen Wert aus der Datenbank

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

  • PHP liest falschen Wert aus der Datenbank

    Hallo!

    Also, ich bin dabei ein Login-Script mit MySQL zu realisieren (auf einem der Tutorials basierend). Mit dem registrieren funktioniert alles gut, nur, wenn ich beim Einloggen das eingegebe Passwort mit dem aus der Datenbank vergleiche (beide von PHP md5-verschlüsselt), dann hängt PHP bei dem aus MySQL hinten zwei Stellen an. Hier mein Script:

    PHP-Code:
    <?php
    include 'config.php'// Verbindung zur Datenbank is hier drinnen
    $user=$_POST['usrname'];
    $pwd=$_POST['pwd'];
    $pwd=md5($pwd);
    $sql="SELECT * FROM users WHERE username='$user';";
    $result mysql_query($sql);
    if(
    $result) {
      
    $data mysql_fetch_assoc($result);
      if(
    $data['password']==$pwd) {
      echo 
    "Vergleich der Datenbankabfrage erfolgreich. Benutzername und Passwort stimmen überein.</p>";
      echo 
    "<b>ID:</b> ".$data['id']."<br>";
      echo 
    "<b>Passwort:</b> ".$data['password']."<br>";
      }
     else { echo 
    "Falsches Passwort.<br> Eingegebenes Passwort (MD5): ".$pwd."<br>Passwort aus der Datenbank: 
    "
    .$data['password']."</p>";}
      }
    else {
     die(
    "Fehler beim Ausführen des MySQL-Befehles. MySQL meldet: ".mysql_error());
    }
    ?>
    Zuletzt geändert von yosh24; 27.07.2006, 20:21.

  • #2
    kannst du mal beide zeigen..

    Kommentar


    • #3
      Das Registrierungs-Script?

      PHP-Code:
      <?php
      include 'config.php';

      if(isset(
      $_POST['username'])) {
      $un=$_POST['username'];
      $pwd=md5($_POST['password']);
      $na=$_POST['name'];
      $bd=$_POST['birthday'];
      $to=$_POST['town'];
      $zi=$_POST['zip'];
      $co=$_POST['country'];
      $cl=$_POST['club'];
      $sx=$_POST['************'];
      $ab=$_POST['about'];
      $em=$_POST['email'];
      $hp=$_POST['homepage'];
      if(
      $sx=="männlich") {$sx=1;} elseif($sx=="weiblich") {$sx=0;}
      $sql "INSERT INTO users (username, password, name, birthday, town, zip, country, club, ************, about, email, 
      homepage, since) VALUES ('
      $un', '$pwd', '$na', '$bd', '$to', '$zi', '$co', '$cl', '$sx', '$ab', '$em', '$hp',
       NOW())"
      ;
      $res=mysql_query($sql);
      if(!
      $res) {
      die(
      "Fehler beim Eintragen in die Datenbank.");
      }
      echo 
      "Registriert. <a href='http://www.yosh24.de/php/php.php'>Hier</a> klicken, um alle registrierten 
      User einzusehen!</p>\n"
      ;
      }
      else {
      echo 
      "<form action='reg.php' method='post' name='registrierung'>
      Username: <input name='username' type='text'><br>
      Passwort: <input name='password' type='text'><br>
      Name: <input name='name' type='text'><br>
      Geburtsdatum (JJJJ-MM-TT): <input name='birthday' type='text'><br>
      Wohnort: <input name='town' type='text'><br>
      Posteitzahl: <input name='zip' type='text'><br>
      Land: <input name='country' type='text'><br>
      Lieblingsdiscothek: <input name='club' type='text'><br>
      Geschlecht (männlich / weiblich)t: <input name='************' type='text'><br>
      Benutzertext: <input name='about' type='textfield' maxlength=100><br>
      e-mail: <input name='email' type='text'><br>
      Homepage: <input name='homepage' type='text'><br>
      <input type='submit'>
      </form>"
      ;
      }
      }
      else {
      die(
      "Es konnte keine Verbindung zer Datenbank hergestellt werden.");
      }
      ?>
      Zuletzt geändert von yosh24; 27.07.2006, 20:22.

      Kommentar


      • #4
        entschuldige, ich meine die hashes.
        etwa von dem wort "foobar".

        Kommentar


        • #5
          Sorry, mir fällt grad auf, dass er das neu eingegebene Passwort verändert
          Also bei "Foobar":

          Beim Login eingegebenes: 3858f62230ac3c915f300c664312c63f
          Aus MySQL gelesenes: 3858f62230ac3c915f300c664312c6

          Kommentar


          • #6
            wie du merkst, speicherst du in der tabelle nur 30 zeichen. ein md5-hash besteht aber aus 32 zeichen... siehst du das problem nun?

            Kommentar


            • #7
              Aso! Also einfach in der Tabelle von varchar(30) auf varchar(32) ändern und fertig? Hat jedes md5-Verschlüsselte Wort 32 Zeichen, egal, wie lange?

              Kommentar


              • #8
                http://de.wikipedia.org/wiki/Md5#MD5-Hashes

                Kommentar


                • #9
                  Ah! Danke für die Hilfe!

                  Kommentar

                  Lädt...
                  X