Passwort Errinrerung

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

  • Passwort Errinrerung

    Hallo Community,

    ich habe mich nun durchgerungen php+smarty weiter zu lernen.

    Ich benutze Smarty+Php und baue langsam eine Webseite auf mit Login, Useraccount ,.... ich habe eigentlich alles fertig und bins chwer zufrieden alles funzt mit SQL allerdings die Abfrage oder auslesen eines vergessenen Passworts ist mir sowas von unklar das ich garnicht weiss wie ich das machen soll.

    Gibt es dafür eventuell eine art reference Script ?
    Oder jemand einen Schnipsel zur Hand ?

    Ich habe null Ahnung wie man sowas realisieren soll @ Password reminder

    Ich bedanke mich schonmal für die Aufmerksamkeit zum Thread

    MfG Thomas

    Edit: Die interne Passwort Änderung habe ich makellos hinbekommen aber ohne Email ein Passwort anfordern,...

  • #2
    Bei ner PW-Erinnerung sendet man normalerweise ein neu
    generiertes PW an die hinterlegte email-Adresse.

    Dieses PW muß vom User sofort geändert werden,
    da es nur für eine Session gültig ist.

    Kommentar


    • #3
      Passwörter sollten stets gehasht in der DB stehen und nur wenns gar nicht anders geht per Mail versandt werden.

      Hat ein User sein Passwort vergessen, muß er seine im Profil hinterlegte Mailadresse eingeben, bekommt dann eine Mail mit einem "Einmal-Link", der ihn auf eine Seite führt, wo er sein altes Passwort überschreiben kann. Mehr brauchts nicht.

      Kommentar


      • #4
        Wie stellt sich sowas zusammen ?

        Gibt es dafür nicht eine art fertiges Script welches ich auseinandernehmen kann ?

        Ich habe meine PW's MD5 Verschlüsselt auf dem Server.
        Ich habe allerdings eine weitere Ersatzspalte in sql die es auch unverschlüsselt savet " mit dem PW kann man sich aber nicht einloggen. "die Spalte ist im select nicht eingebunden"

        Es ist nur eine art sichbares DUMMY damit ich beim PW switch das alte PW anzeigenlassen kann so umgehe ich die MD5 Verschlüsselung da beim auslesen sonst die MD5 sichtbar stehen würde.

        Das pw könnte ich doch anfordern und dann neu als md5 verschlüsselt an den Server senden ? Ich mache mir soviel Gedanken das mir das irgendwie total komplex vorkommt.

        Kommentar


        • #5
          laß doch diese Dummy-Tabelle weg
          - wenn jemand sein PW vergißt dann isses eben weg.

          Du erstellst ein neues und dann wie oben beschrieben.

          Kommentar


          • #6
            Joar wie oben beschrieben ist ja gut aber ich weiss nicht wie ich ein PW automatisch erstellen kann geschweige wie ich es mache das es an die eingegebene Email versandt wird.

            Kommentar


            • #7
              ein PW erstellen?

              z.B. den Usernamen und einen Teil der Sessionid dranhängen.
              und dann in der db speichern, damit es nicht verloren geht.


              wie man das per mail verschickt?

              mit der mail-Funktion von php oder der phpmailer-Klasse.

              Kommentar


              • #8
                Als Konzept:

                pwlost.php
                PHP-Code:
                <?php
                if (!isset($_POST['mail'])) {
                ?>
                <form method="post" action="">
                  Deine Emailadresse: 
                  <input type="text" name="mail">
                  <input type="submit" value="ok">
                </form>
                <?php
                } else {
                    
                $dbh mysql_connect('localhost', ....);
                    
                $sql 'SELECT COUNT(id) FROM usertable '
                          
                ."WHERE email = '".mysql_real_escape_string($_POST['mail'])."'";
                    
                $res mysql_query($sql) or die(mysql_error());
                    
                $row mysql_fetch_row($res);
                    if (
                $row[0] != 1) {
                        echo 
                'Mailadresse unbekannt!';
                    } else {
                        
                $linkid uniqid();
                        
                $sql "INSERT pwlostids (id, time) VALUES ('$linkid', NOW())";
                        
                mysql_query($sql) or die(mysql_error());
                        
                $link 'http://example.com/path/pwreset.php?id='.$linkid;
                        
                mail($_POST['mail'], 'Passwort vergessen'$link);
                        echo 
                'Sie haben Post!';
                    }
                }
                ?>
                pwreset.php
                PHP-Code:
                <?php

                isset($_GET['id']) or die();

                $dbh mysql_connect('localhost', ....);
                $sql 'SELECT time FROM pwlostids '
                      
                ."WHERE id = '".mysql_real_escape_string($_GET['id'])."'";
                $res mysql_query($sql) or die(mysql_error());
                $row mysql_fetch_row($res);
                if (
                time() - $row['time'] > 60*60) {
                    echo 
                'Die ID ist schon abgelaufen.';
                } else {
                    
                $newpw implode(''array_slice(shuffle(range('a''z')), 08));
                    
                $sql "UPDATE usertable SET pw = MD5('$newpw')";
                    
                mysql_query($sql) or die(mysql_error());
                    echo 
                "Logge dich mit $newpw ein und ändere dein Passwort!":
                }

                $sql 'DELETE FROM pwlostids '
                      
                ."WHERE id = '".mysql_real_escape_string($_GET['id'])."'";
                mysql_query($sql) or die(mysql_error());

                ?>

                Kommentar


                • #9
                  hast Du das jetzt einfach so runtergetippt
                  oder hattest Du das Script schon parat ?

                  Kommentar


                  • #10
                    Ne das hab ich einfach so runtergetippt und du solltest es keinesfalls einfach so übernehmen. Beim ersten Durchlauf würde es die Passwörter aller User "vernichten" und überhaupt ist es unsicher; nur eine Idee, ein Anfang für dich. Mach was draus!

                    Kommentar

                    Lädt...
                    X