Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Passwort Vergleich crypt()

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.04.2003
    Beiträge
    43

    Passwort Vergleich crypt()

    Hallo,

    das ist ein ganz übles Problem.
    Die vier Skripte funktionieren sonst einwandfrei... jedoch die Password abfrage die läuft nicht wie sie es eigentlich laufen sollte...

    also zuerst soll sich einer Regestrieren "nutzername" und "password" dies beiden informationen werden in einer datenbank abgelegt (das Password wird verschlüsselt abgespeichert)
    -> das Funktioniert....

    doch jetzt soll sich der gleiche "nutzername" mit dem gleichen "password" auf dieseer Datenbank anmelden. Dieser vergleich des gerade gespeicherten und den eingegeben Passwort funktioniert nicht.... (Der Passwort vergelich findet in der nutzer_pruefen.php Datei statt)

    Ich verwende dazu die crypt() Funktion
    Aber am besten schaut euch mal denn Code an... (von nutzer_pruefen.php)

    Ich würde mich über eine rückantwort freuen.....und wäre sehr dankbar dafür...
    Falls ihr noch die anderen drei Scripte braucht werde ich sie reinstellen!
    Oder kann ich mehr als nur eine Datei dranhängen?

    Code:
    //nutzer_pruefen.php
    
    <?php
    
    function eingabe_wiederholen($fehlermeldung)
     {
      printf("%s<br>",$fehlermeldung);
      printf("<form action='nutzer_abfrage.php' method='post'>");
      printf("<input type='submit' value='Eingabe wiederholen'>");
      printf("</form>");
     }
    
    if (strlen($nutzername)==0)
     {
      eingabe_wiederholen("Bitte einen Nutzernamen eingeben");
      exit();
     }
    
    if (strlen($password)==0)
     {
      eingabe_wiederholen("Bitte ein Password eingeben");
      exit();
     }
    
    include("/webserver/php/include/webnutzer_connect.inc");
    
    $ergebnis = mysql_query('use webnutzer');
    
    if ($ergebnis == NULL)
     {
      printf("use: %s %s",mysql_errno(),mysql_error());
      exit();
     }
    
    $ergebnis = mysql_query("select * from nutzerdaten");
    
    if($ergebnis == NULL)
     {
      printf("select * from nutzerdaten: %s %s",mysql_errno(),mysql_error());
      exit();
     }
     
    $nutzer_existiert = FALSE;
    
    while ($datensatz = mysql_fetch_assoc($ergebnis))
     {
      if ($datensatz["nutzername"] == $nutzername)
       {
        $verschluesselt = $datensatz["password"];
        $nutzer_existiert = TRUE;
       }
     }
    
    if ($nutzer_existiert == FALSE)
     {
      eingabe_wiederholen("Nutzer existeirt nicht");
      exit();
     }
     
    if($verschluesselt == crypt($password,$verschluesselt))
     {
      printf("Passwort OK");
     }
    else
     {
      printf("Passwort <b>nicht</b> OK");
     }
    
    eingabe_wiederholen(" ");
    
    //echo "<center><form action='nutzer_eingabe' method='post'>";
    //echo "<input type='submit' value='neue Eingabe'>";
    //echo "</form></center>";
    
    ?>
    und hier noch die nutzer_speichern.php

    Code:
    <?php
    
    function eingabe_wiederholen($fehlermeldung)
     {
      printf("<form action='nutzer_eingabe.php' method='post'>");
      printf("<input type='submit' value='Eingabe wiederholen'>");
      printf("</form>");
     }
    
    if (strlen($nutzername)==0)
     {
      eingabe_wiederholen("Bitte einen Nutzernamen eingeben");
      exit();
     }
    
    if (strlen($password)==0)
     {
      eingabe_wiederholen("Bitte ein Password eingeben");
      exit();
     }
    
    include("/webserver/php/include/webnutzer_connect.inc");
    
    $ergebnis = mysql_query('use webnutzer');
    
    if ($ergebnis == NULL)
     {
      printf("use: %s %s",mysql_errno(),mysql_error());
      exit();
     }
    
    $ergebnis = mysql_query("select * from nutzerdaten");
    
    if($ergebnis == NULL)
     {
      printf("select * from nutzerdaten: %s %s",mysql_errno(),mysql_error());
      exit();
     }
     
    $verschluesselt = crypt($password);
    
    $kommando  = "insert into nutzerdaten ";
    $kommando .= " (nutzername,password) values";
    $kommando .= " ('$nutzername','$verschluesselt')";
    
    $ergebnis = mysql_query($kommando);
    
    if ($ergebnis == 0)
     {
      printf("insert into  nutzerdaten: %s %s",mysql_errno(),mysql_error());
      exit();
     }
    
    echo "<center><form action='nutzer_eingabe' method='post'>";
    echo "<input type='submit' value='neue Eingabe'>";
    echo "</form></center>";
    
    ?>
    gruss
    suse
    Geändert von suse (04-06-2003 um 14:24 Uhr)

  2. #2
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo Suse!

    Der Fehler steckt in der Tat hier:
    PHP-Code:
    while ($datensatz mysql_fetch_assoc($ergebnis))
     {
      if (
    $datensatz["nutzername"] == $nutzername)
       {
        
    $verschluesselt $datensatz["password"];
        
    $nutzer_existiert TRUE;
       }
     }

    if (
    $nutzer_existiert == FALSE)
     {
      
    eingabe_wiederholen("Nutzer existeirt nicht");
      exit();
     }
     
    if(
    $verschluesselt == crypt($password,$verschluesselt))
     {
      
    printf("Passwort OK");
     }
    else
     {
      
    printf("Passwort <b>nicht</b> OK");
     } 
    Genauer gesagt liegt hier wohl ein Denkfehler vor:
    if($verschluesselt == crypt($password,$verschluesselt))

    Du verwendest $verschlüsselt als Salt!
    --> wirf mal einen Blick ins Manual: http://www.php.net/crypt

    Die Lösung:
    Verwende crypt mit dem selben Salt wie beim verschlüsseln oder md5() statt crypt - ist ohnehin gebräuchlicher:
    if($verschluesselt == md5($password))

    Das Passwort in der Datenbank muss dann logischerweise auch mit md5() verschlüsselt sein.


  3. #3
    Registrierter Benutzer
    Registriert seit
    15.04.2003
    Beiträge
    43
    Mit md5() klappt es auch nicht ....

    ist das denn nicht richtig ...
    wenn ich ..

    $verschluesselt = crypt($password);

    und dann es vergelichen will

    if ($verschluesselt == crypt($password,$verschluesselt))
    {
    blbal
    }

    ich benutze kein salt deswegen muss es doch gehen oder...??

    Noch was wenn ich salt benutzen würde müsste es doch so lauten .... oder?

    $verschluesselt = crypt($password,"XY");

    und dann es vergelichen will

    if ($verschluesselt == crypt($password,"XY"))
    {
    blbal
    }

    gruss
    suse
    Geändert von suse (04-06-2003 um 15:13 Uhr)

  4. #4
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hier hast du einen Ansatz, wie es mit md5 funktioniert....

    http://www.devarticles.com/art/1/417/2


  5. #5
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi mitnander,

    also erstma vorneweg, lass Dich nicht verunsichern suse, Deine Verwendung von crypt() war schon korrekt.
    Genauer gesagt liegt hier wohl ein Denkfehler vor:
    if($verschluesselt == crypt($password,$verschluesselt))

    Du verwendest $verschlüsselt als Salt!
    --> wirf mal einen Blick ins Manual: http://www.php.net/crypt
    Also genauer gesagt liegt hier wohl ein Lesefehler seitens Gaert vor

    Anhand Deines Skriptes kann ich nun leider auch nicht erkennen, was da falsch läuft aber folgendes was in Kurzform das simuliert, was bei Dir ablaufen soll, funktioniert bei mir einwandfrei.
    Code:
    <?
    	$password = "password";
    
    	$crypted1 = crypt($password);
    
    	$crypted2 = crypt($password, $crypted1);
    
    	echo "crypted1: $crypted1<BR>\n";
    	echo "crypted2: $crypted2<BR>\n";
    
    ?>
    Beide $crypted - Variablen haben den selben Inhalt.

    Versuch mal bei Dir einige echo() - Ausgaben zum Debuggen mit reinzubringen, also was er z.B. als verschlüsseltes Passwort aus der Datenbank holt, welches Plaintext-Passwort er mit diesem als Salt versucht zu crypten und und und.... Dann ist Deine Chance, zu sehen wo es hängt grösser.

    Und das hier
    Code:
    $ergebnis = mysql_query('use webnutzer');
    ...
    lässt sich doch über
    Code:
    mysql_select_db()
    realisieren.

    gruss,

    phate

  6. #6
    Registrierter Benutzer
    Registriert seit
    15.04.2003
    Beiträge
    43
    Ich bekomme es einfach nicht hin....
    Ich weiss zwar was du meinst aber mit der Ausführung klappt es nicht...
    Schau dir mal bitte einfach mal alle Skripte an ...
    Ich wäre dir wirklich sehr dankbar...

    nutzer_speichern.php
    Code:
    <?php
    
    function eingabe_wiederholen($fehlermeldung)
     {
      printf("<form action='nutzer_eingabe.php' method='post'>");
      printf("<input type='submit' value='Eingabe wiederholen'>");
      printf("</form>");
     }
    
    if (strlen($nutzername)==0)
     {
      eingabe_wiederholen("Bitte einen Nutzernamen eingeben");
      exit();
     }
    
    if (strlen($password)==0)
     {
      eingabe_wiederholen("Bitte ein Password eingeben");
      exit();
     }
    
    include("/webserver/php/include/webnutzer_connect.inc");
    
    $ergebnis = mysql_query('use webnutzer');
    
    if ($ergebnis == NULL)
     {
      printf("use: %s %s",mysql_errno(),mysql_error());
      exit();
     }
    
    $ergebnis = mysql_query("select * from nutzerdaten");
    
    if($ergebnis == NULL)
     {
      printf("select * from nutzerdaten: %s %s",mysql_errno(),mysql_error());
      exit();
     }
     
    $verschluesselt = crypt($password);
    
    $kommando  = "insert into nutzerdaten ";
    $kommando .= " (nutzername,password) values";
    $kommando .= " ('$nutzername','$verschluesselt')";
    
    $ergebnis = mysql_query($kommando);
    
    if ($ergebnis == 0)
     {
      printf("insert into  nutzerdaten: %s %s",mysql_errno(),mysql_error());
      exit();
     }
    
    echo "<center><form action='nutzer_eingabe' method='post'>";
    echo "<input type='submit' value='neue Eingabe'>";
    echo "</form></center>";
    
    ?>
    nutzer_pruefen.php
    Code:
    <?php
    
    function eingabe_wiederholen($fehlermeldung)
     {
      printf("%s<br>",$fehlermeldung);
      printf("<form action='nutzer_abfrage.php' method='post'>");
      printf("<input type='submit' value='Eingabe wiederholen'>");
      printf("</form>");
     }
    
    if (strlen($nutzername)==0)
     {
      eingabe_wiederholen("Bitte einen Nutzernamen eingeben");
      exit();
     }
    
    if (strlen($password)==0)
     {
      eingabe_wiederholen("Bitte ein Password eingeben");
      exit();
     }
    
    include("/webserver/php/include/webnutzer_connect.inc");
    
    $ergebnis = mysql_query('use webnutzer');
    
    if ($ergebnis == NULL)
     {
      printf("use: %s %s",mysql_errno(),mysql_error());
      exit();
     }
    
    $ergebnis = mysql_query("select * from nutzerdaten");
    
    if($ergebnis == NULL)
     {
      printf("select * from nutzerdaten: %s %s",mysql_errno(),mysql_error());
      exit();
     }
     
    $nutzer_existiert = FALSE;
    
    while ($datensatz = mysql_fetch_assoc($ergebnis))
     {
      if ($datensatz["nutzername"] == $nutzername)
       {
        $verschluesselt = $datensatz["password"];
        $nutzer_existiert = TRUE;
       }
     }
    
    if ($nutzer_existiert == FALSE)
     {
      eingabe_wiederholen("Nutzer existeirt nicht");
      exit();
     }
     
    if($verschluesselt == crypt($password,$verschluesselt))
     {
      printf("Passwort OK");
     }
    else
     {
      printf("Passwort <b>nicht</b> OK");
     }
    
    eingabe_wiederholen(" ");
    
    echo "verschluesselt = $verschluesselt<p>";
    echo "verschluesselt1 = $verschluesselt1";
    //echo "<center><form action='nutzer_eingabe' method='post'>";
    //echo "<input type='submit' value='neue Eingabe'>";
    //echo "</form></center>";
    
    ?>
    nutzer_eingabe.php
    Code:
    <?php
    
    include("/webserver/php/include/webnutzer_connect.inc");
    
    //printf("Verbindung zu MySQL wurde hergestellt<br>");
    
    $ergebnis = mysql_select_db('webnutzer');
    
    if($ergebnis == NULL)
     {
      printf("use: %s %s",mysql_errno(),mysql_error());
      exit();
     }
     
    $nutzer = mysql_query("select * from nutzerdaten");
    
    printf("<center><table border =1><tr>");
    while($datensatz = mysql_fetch_assoc($nutzer))
     {
      printf("<tr><td> %s</td><td> %s</td></tr>",$datensatz["nutzername"],$datensatz["password"]);
     }
    printf("</tr></table></center>");
    
    echo "<center><table border=0>"; 
    echo "<form action='nutzer_speichern.php' method='post'>";
    echo "<tr>";
    echo "<td>Nutzername:</td><td><input type='text' name='nutzername' maxlength='20'></td>";
    echo "</tr>";
    echo "<br>";
    echo "<tr>";
    echo "<td>Password:</td><td> <input type='password' name='password' maxlength='8'></td>";
    echo "</tr></table>";
    echo "<p>";
    echo "<input type='submit' value='Eingabe speichern'>";
    echo "<input type='reset' value='Eingabe l&ouml;schen'>";
    echo "</form>";
    echo "<form action='nutzer_abfrage.php' method='post'>";
    echo "<input type='submit' value='Anmelden'>";
    echo "</form></center>";
    
    ?>
    nutzer_abfrage.php
    Code:
    <?php
    
    include("/webserver/php/include/webnutzer_connect.inc");
    
    //printf("Verbindung zu MySQL wurde hergestellt<br>");
    
    $ergebnis = mysql_select_db('webnutzer');
    
    if($ergebnis == NULL)
     {
      printf("use: %s %s",mysql_errno(),mysql_error());
      exit();
     }
     
    $nutzer = mysql_query("select * from nutzerdaten");
    
    printf("<center><table border =1><tr>");
    while($datensatz = mysql_fetch_assoc($nutzer))
     {
      printf("<tr><td> %s</td><td> %s</td></tr>",$datensatz["nutzername"],$datensatz["password"]);
     }
    printf("</tr></table></center>");
    
    echo "<center><table border=0>"; 
    echo "<form action='nutzer_pruefen.php' method='post'>";
    echo "<tr>";
    echo "<td>Nutzername:</td><td><input type='text' name='nutzername' maxlength='20'></td>";
    echo "</tr>";
    echo "<br>";
    echo "<tr>";
    echo "<td>Password:</td><td> <input type='password' name='password' maxlength='8'></td>";
    echo "</tr></table>";
    echo "<p>";
    echo "<input type='submit' value='Anmelden'>";
    echo "<input type='reset' value='Eingabe l&ouml;schen'>";
    echo "</form>";
    echo "<form action='nutzer_eingabe.php' method='post'>";
    echo "<input type='submit' value='Registrieren'>";
    echo "</form></center>";
    ?>
    Probiere es einfach mal aus wen du Zeit hast...
    Ich wäre wirklich gut wenn du mir weiterhelfen könnteset...

    gruss
    suse

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Das da:
    Code:
    $nutzername = $_REQUEST['nutzername'];
    $password   = $_REQUEST['password'];
    ganz oben in nutzer_pruefen.php und nutzer_speichern.php und es hat funktioniert

  8. #8
    Registrierter Benutzer
    Registriert seit
    15.04.2003
    Beiträge
    43
    Sorry damit funktioniert nichts...
    Keine Anmeldung und die Speicherung auch nicht..

    gruss
    suse

  9. #9
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Vielleicht stimmt was mit deinem Datenbankconnectscript oder mti der Tabellenstruktur nicht, die Fehlerüberprüfung funktioniert so nämlich nicht.

    Sämtliche MySQL-Funktionen geben bei einem Fehler nicht NULL, sondern false zurück.

  10. #10
    Registrierter Benutzer
    Registriert seit
    15.04.2003
    Beiträge
    43
    Nein nein...

    jetzt läuft alles .... lag an der Datenbanktabelle...
    Trotzdem vielen Dank....

    gruss
    suse

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •