Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfaches Passwort vergessen Script

Einklappen

Neue Werbung 2019

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

  • Einfaches Passwort vergessen Script

    Hi,

    ich bin gerade dabei ein "Passwort vergessen" Teil zu schreiben.
    Leider hat es noch nicht auf anhieb geklappt
    Vielleicht habt ihr einen schnellen Rat.

    PHP-Code:
    if ('POST' == $_SERVER['REQUEST_METHOD']) {
        if (!isset(
    $_POST['email'])) {
            return 
    INVALID_FORM;
        }

        
    $email $_POST['email'];
        
         
    $ergebnis "SELECT
                    *
                FROM
                    User
                WHERE 
                    Email = '
    $email' ";
        if (!
    $stmt $db->prepare($ergebnis)) {
            return 
    $db->error;
        }
            
        if (!
    $stmt) {
            return 
    $db->error;
        }
            
    $stmt->close();
            
            
    $chars = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
            
            
    $newpwd 'x';
            for (
    $i 0$i 9$i++) {
                
    $newpwd .= $chars{mt_rand (0,strlen($chars))};
            }
            
            
    $ToEmail $email;
            
    $header "Dein Account f�r xxxyyy";
            
    $Message 'Dein Account f�r xxxyyy

            !! Vorsichtig !! Dein Passwort wurde ge�ndert.
            
            
            Dein neues Passwort: '
    .$newpwd.'
            
            Viel Spa� weiterhin auf unserer Seite!'
    ;
            
            if(
    mail($ToEmail,$header$Message"From: Administrator ")) {    
                return 
    'Dein Account wurde gefunden und das neue Passwort wurde zu '.$email.' geschickt.';
            } else { 
                return 
    'Es gab ein Problem beim Senden.';
            }
            
            
    $newmd5pwd=md5($newpwd);
            
            
    $sql "UPDATE 
                        User 
                    SET 
                        Password='
    $newmd5pwd
                    WHERE 
                        Email='
    $email' ";
        if (!
    $stmt $db->prepare($sql)) {
            return 
    $db->error;
        }
            if (!
    $stmt->execute()) {
                return 
    $stmt->error;
               }

    - Es wird kein Fehler ausgegeben
    - Die Mail wird mit generiertem Passwort gesendet

    Der Fehler liegt denke ich in der "UPDATE Abfrage". Denke er übermittelt der Datenbank nicht das verschlüsselte Passwort. Nur warum?

  • #2
    also irgendwie was sollen die ganzen returns da drin?
    Btw. ist ichergestellt, dass email unique in deiner Tabelle ist?
    Was ist mit SQl injections?
    Denk mal über die Art und Weise Deiner Variablenbezeichnungen nach

    Kommentar


    • #3
      Das Skript wird durch das Return auch immer abgebrochen

      Kommentar


      • #4
        Die Email ist unique, die Variablen Namen sind nicht perfekt, das stimmt

        Der Fehler das der Update Befehl nicht ausgeführt wurde lag an einem return Wert bei mail.

        Nun wurde die Mail mit dem Passwort verschickt, das Passwort mit md5 verschlüsselt und in die Datenbank geschrieben, jedoch steht beim Login: Passwort ist ungültig. Muss ich das md5 Passwort mit irgendetwas verbinden damit er das gescheit erkennt oder so? Sry bin ja noch Anfänger

        Kommentar


        • #5
          naja kommt darauf an wie Du den login geschrieben hast, also was passiert wenn der nutzer sich mit seinen daten versucht anzumelden?

          Btw. ist die vorgehensweise nicht so prickelnd, denn Du setzt immer ein neues passwort, wenn jemand eine dem system bekannte email eingibt.
          Du solltest da anders vorgehen, nämlich dem nutzer eine email schicken mit einem link oder code darin, den er nutzen kann ein neues passwort anzufordern.
          Deine vorgehensweise macht schönen spielraum, um andere Nutzer zu nerven mit passwort rücksetzen.

          Kommentar


          • #6
            danke HPR, werde es mal genauer angucken.
            Mit Sicherheitslink etc. mache ich dann später.. erstmal klein anfangen

            Kommentar


            • #7
              Wozu haben wir unseren schönen Adventskalender? Bitte unbedingt lesen: http://www.php.de/adventskalender-20...vergessen.html

              Mit Sicherheitslink etc. mache ich dann später.. erstmal klein anfangen
              Bitte nicht.
              Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

              Kommentar


              • #8
                Zitat von Manko10 Beitrag anzeigen
                Wozu haben wir unseren schönen Adventskalender? Bitte unbedingt lesen: http://www.php.de/adventskalender-20...vergessen.html

                Bitte nicht.
                Ok nun kommt der nächste Schritt Link, Seite, neues PW...

                Kommentar

                Lädt...
                X