Zum Passwort holen wird ein Formular benötigt.
Hinweis Menü / Formulare: eMail unter XAMPP Offline testen
das formular
- <! DOCTYPE html>
- <html lang = " de "> <head>
- <meta charset = " UTF-8 ">
- <meta name = " viewport " content = " width = device-width , initial-scale = 1 . 0 ">
- <title> Passwort vergessen </title>
- <meta name = " dcterms.rights " content = " locomputing ">
- <meta name = " description " content = " Beschreibung der Website ">
- <meta name = " keywords " content = " Keywords ">
- <link rel = " stylesheet " href = " https : / / locomputing . de / mustercss / formular_style . css ">
- </head>
- <body>
- <h4> Passwort vergessen? </h4>
- <p> Bitte geben Sie Ihre Daten ein. </p>
- <fieldset>
- <p class = "fehler"> <?php echo $errror;?> </p>
- <form method = "post">
- <div class = "form-face">
- <label for = "uname"> User-Name: <span> * </span> </label>
- <span class = "fehler"> <?php echo $names_err ; ?></span>
- <input pattern = " [ A - Z ] [ a - z A - Z 0 - 9 _ - ] { 4 , 29 } " required = "required" placeholder = " User-Name " title = " User-Namen eintragen " type = "text" id = "uname" name = "benutzer" maxlength = "32" class = "form-control">
- </div>
- <div class = "form-face">
- <label for = "email"> User-Mail: <span> * </span> </label>
- <span class = "fehler"> <?php echo $emails_err ; ?></span>
- <input pattern = " ^ [ a - z ] { 2 , } [ \ w . + - ] { 0 , } @ [ a - z 0 - 9 - ] { 2 , 30 } ( [ . ] [ a - z ] { 2 , 3 } ) $ " required = "required" placeholder = " User-Mail " title = " User-Mail eintragen " type = "email" id = "email" name = "usemail" maxlength = "78" class = "form-control">
- </div>
- <div class = "form-face">
- <label> <span> * </span> Felder sind Pflicht! </label>
- <input type = "submit" class = "butt button-red" name = "passen" value = "Passwortholen">
- <input class = "butt button-red" type = "reset" value = "Reset">
- </div>
- </form>
- </fieldset>
- <p> Passwort vorhanden! <a href = "login.php"> Login hier </a> </p>
- </body>
- </html>
die pwforget.php
<?php
Hier wird das formular eingefügt.
- // Datenbank verbindung einfügen
- if ( file_exists ( ' db_conect.php ' ) = = true ) { require ( ' db_conect.php ' ) ; }
- // Sitzung starten
- session_start ( ) ;
- // Prüfen ob User eingeloggt ist
- if ( isset ( $_SESSION [ " loggedin " ] ) & & $_SESSION [ " loggedin " ] = = = true )
- {
- header ( "Location : welcome.php " ) ; exit ;
- }
- // eMail-Absender unbedingt ändern!
- // Variablen definieren und auf leere Werte setzen
- $names = $emails = $errror = " " ;
- $names_err = $emails_err = " " ;
- // Formulardaten werden verarbeitet, wenn das Formular gesendet wird
- if ( isset ( $_POST [ ' passen ' ] ) && $_POST [ ' passen ' ] = = 'Passwortholen' )
- {
- // POST für Username prüfen
- $postname = isset ( $_POST [ ' benutzer ' ] ) ? $_POST [ ' benutzer ' ] : " " ;
- if ( empty ( $postname ) )
- {
- $names_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- elseif ( ( strlen ( trim ( $postname ) ) < 5 ) | | ( strlen ( trim ( $postname ) ) ) > 30 )
- {
- $names_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- else
- {
- $names = htmlspecialchars ( $postname ) ;
- if ( ! preg_match ( " / ^ [ A - Z ] + [ a - z A - Z 0 - 9 - _ ' ] * $ / " , $names ) )
- {
- $names_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- if ( $names = = = false )
- {
- $names_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- }
- // POST für eMail prüfen
- $postmail = isset ( $_POST [ ' usemail ' ] ) ? $_POST [ ' usemail ' ] : " " ;
- if ( empty ( $postmail ) )
- {
- $emails_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- else
- {
- $emails = filter_var ( htmlspecialchars ( $postmail ) , FILTER_VALIDATE_EMAIL ) ;
- if ( ! preg_match ( " / ^ ( [ a - z 0 - 9 \ + _ \ - ] + ) * @ ( [ a - z 0 - 9 \ - ] { 2 , 30 } + \ . ) + [ a - z ] { 2 , 3 } $ / i x " , $emails ) )
- {
- $emails_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- if ( $emails = = = false )
- {
- $emails_err = ' ERROR Da stimmt was nicht ! ' ;
- }
- }
- // Keine Fehler Formular Inhalt ausführen
- if ( empty ( $names_err ) & & empty ( $emails_err ) )
- {
- // Prüfen ob User-Name, User-Mail und Berechtigung(active & block) vorhanden ist
- $stmt = $sqli -> prepare ( " SELECT username , usermail FROM usertable WHERE username = ? and usermail = ? and active = ? and block = ? " ) ;
- $user = trim ( $names ) ;
- $email = trim ( $emails ) ;
- $aktiv = IntVal ( 1 ) ;
- $blok = IntVal ( 0 ) ;
- $stmt -> bind_param ( ' s s i i ' , $user , $email , $aktiv , $blok ) ;
- $result = $stmt -> execute ( ) ;
- $stmt -> store_result ( ) ;
- if ( $stmt -> num_rows = = 0 )
- {
- // Prüfen ob User-Name, User-Mail und Berechtigung(active & block) vorhanden ist
- $stmt = $pdo -> prepare ( " SELECT username , usermail FROM usertable WHERE username = ? and usermail = ? and active = ? and block = ? " ) ;
- $user = trim ( $names ) ;
- $email = trim ( $emails ) ;
- $aktiv = IntVal ( 1 ) ;
- $blok = IntVal ( 0 ) ;
- $stmt -> execute ( array ( $user , $email , $aktiv , $blok ) ) ;
- if ( $stmt -> rowCount ( ) = = 0 )
- {
- // Passwort String erstellen
- function PasswString ( $length = 16 )
- {
- return substr ( str_shuffle ( str_repeat ( $x = ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*+~#,.-_:; ' , ceil ( $length / strlen ( $x ) ) ) ) , 1 , $length ) ;
- }
- // Passwort String als Variable
- $psw = PasswString ( ) ;
- // User-Name und User-Mail für eMailversand auswählen
- $stmt = $sqli -> prepare ( ' SELECT id , username , usermail FROM usertable WHERE username = ? and active = ? and block = ? ' ) ;
- $name = trim ( $names ) ;
- $email = trim ( $email ) ;
- $aktiv = IntVal ( 1 ) ;
- $blok = IntVal ( 0 ) ;
- $stmt -> bind_param ( ' s i i ' , $name , $aktiv , $blok ) ;
- $stmt -> execute ( ) ;
- $result = $stmt -> get_result ( ) ;
- while ( $ul = $result -> fetch_assoc ( ) )
- {
- // Daten für text/eMail versand sortieren
- $empfaenger = trim ( $email ) ;
- $betreff = "Passwort vergessen \n " ;
- $from = "From: " . $mail_absender . " \n " ;
- $text = "Hallo: " . $names . " \n " ;
- $text . = "Dein Passwort: " . $psw . " \n " ;
- // Formulareingaben versenden
- mail ( $empfaenger , $betreff , $text , $from ) ;
- // Passwort-String hashen
- $passw = password_hash ( $psw , PASSWORD_DEFAULT ) ;
- $stmt = $sqli -> prepare ( ' UPDATE usertable SET userpass = ? WHERE id = ? ' ) ;
- $password = $sqli -> real_escape_string ( $passw ) ;
- $id = IntVal ( $ul [ ' id ' ] ) ;
- $stmt -> bind_param ( ' s i ' , $password , $id ) ;
- $stmt -> execute ( ) ;
- }
- // User-Name und User-Mail für eMailversand auswählen
- $stmt = $pdo -> prepare ( ' SELECT id , username , usermail FROM usertable WHERE username = ? and active = ? and block = ? ' ) ;
- $name = trim ( $names ) ;
- $email = trim ( $email ) ;
- $aktiv = IntVal ( 1 ) ;
- $blok = IntVal ( 0 ) ;
- $stmt -> execute ( array ( $name , $aktiv , $blok ) ) ;
- while ( $ul = $stmt -> fetch ( PDO : : FETCH_ASSOC ) )
- {
- // Daten für text/eMail versand sortieren
- $empfaenger = trim ( $email ) ;
- $betreff = "Passwort vergessen \n " ;
- $from = "From: " . $mail_absender . " \n " ;
- $text = "Hallo: " . $names . " \n " ;
- $text . = "Dein Passwort: " . $psw . " \n " ;
- // Formulareingaben versenden
- mail ( $empfaenger , $betreff , $text , $from ) ;
- // Passwort-String hashen
- $passw = password_hash ( $psw , PASSWORD_DEFAULT ) ;
- $stmt = $pdo -> prepare ( ' UPDATE usertable SET userpass = ? WHERE id = ? ' ) ;
- $password = trim ( $passw ) ;
- $id = IntVal ( $ul [ ' id ' ] ) ;
- $stmt -> execute ( array ( $password , $id ) ) ;
- }
- // Erfolgs-Meldung ausgeben
- echo ' <p> Die Daten wurden an die eingetragene eMail-Adresse versand. <br/>zum <a href = "login.php"> Login </a> </p> ' ; exit ;
- }
- else
- {
- $errror = ' ERROR Da stimmt was nicht ! ' ;
- }
- }
- }
- $mail_absender = " POSTMASTER-DOMAIN.DE " ;
Hier wird das formular eingefügt.