Hallo Zusammen!
ich habe ein kleines Problem:
ich habe mir online für mein Login- bzw. Registrierungs-Bereich einen kleinen Zusatz besorgt.
Passwort vergessen
doch es werden keine emails versendet.
Ich benutze einen vServer mit Apache2 (nur so als kleine Info!)
Der Code:
SQL
Code
[COLOR=#C00000 !important][FONT=inherit]ALTER[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]TABLE[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#000000][FONT=inherit]users[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]ADD[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#000000][FONT=inherit]passwortcode[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]VARCHAR[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]([/FONT][/COLOR][COLOR=#009999 !important][FONT=inherit]255[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit])[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]NULL[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit];
[/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]ALTER[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]TABLE[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#000000][FONT=inherit]users[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]ADD[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#000000][FONT=inherit]passwortcode_time[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit]`[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]TIMESTAMP[/FONT][/COLOR][COLOR=#006FE0 !important][FONT=inherit] [/FONT][/COLOR][COLOR=#C00000 !important][FONT=inherit]NULL[/FONT][/COLOR][COLOR=#333333 !important][FONT=inherit];[/FONT][/COLOR]
PHP
PHP
<?php $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'passwort'); function random_string() { if(function_exists('random_bytes')) { $bytes = random_bytes(16); $str = bin2hex($bytes); } else if(function_exists('openssl_random_pseudo_bytes')) { $bytes = openssl_random_pseudo_bytes(16); $str = bin2hex($bytes); } else if(function_exists('mcrypt_create_iv')) { $bytes = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); $str = bin2hex($bytes); } else { //Bitte euer_geheim_string durch einen zufälligen String mit >12 Zeichen austauschen $str = md5(uniqid('euer_geheimer_string', true)); } return $str;} $showForm = true; if(isset($_GET['send']) ) { if(!isset($_POST['email']) || empty($_POST['email'])) { $error = "<b>Bitte eine E-Mail-Adresse eintragen</b>"; } else { $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email"); $result = $statement->execute(array('email' => $_POST['email'])); $user = $statement->fetch(); if($user === false) { $error = "<b>Kein Benutzer gefunden</b>"; } else { //Überprüfe, ob der User schon einen Passwortcode hat oder ob dieser abgelaufen ist $passwortcode = random_string(); $statement = $pdo->prepare("UPDATE users SET passwortcode = :passwortcode, passwortcode_time = NOW() WHERE id = :userid"); $result = $statement->execute(array('passwortcode' => sha1($passwortcode), 'userid' => $user['id'])); $empfaenger = $user['email']; $betreff = "Neues Passwort für deinen Account auf www.php-einfach.de"; //Ersetzt hier den Domain-Namen $from = "From: Vorname Nachname <absender@domain.de>"; //Ersetzt hier euren Name und E-Mail-Adresse $url_passwortcode = 'http://localhost/passwortzuruecksetzen.php?userid='.$user['id'].'&code='.$passwortcode; //Setzt hier eure richtige Domain ein $text = 'Hallo '.$user['vorname'].',für deinen Account auf www.php-einfach.de wurde nach einem neuen Passwort gefragt. Um ein neues Passwort zu vergeben, rufe innerhalb der nächsten 24 Stunden die folgende Website auf:'.$url_passwortcode.' Sollte dir dein Passwort wieder eingefallen sein oder hast du dies nicht angefordert, so bitte ignoriere diese E-Mail. Viele Grüße,dein PHP-Einfach.de-Team'; mail($empfaenger, $betreff, $text, $from); echo "Ein Link um dein Passwort zurückzusetzen wurde an deine E-Mail-Adresse gesendet."; $showForm = false; } }} if($showForm):?> <h1>Passwort vergessen</h1>Gib hier deine E-Mail-Adresse ein, um ein neues Passwort anzufordern.<br><br> <?phpif(isset($error) && !empty($error)) { echo $error;}?> <form action="?send=1" method="post">E-Mail:<br><input type="email" name="email" value="<?php echo isset($_POST['email']) ? htmlentities($_POST['email']) : ''; ?>"><br><input type="submit" value="Neues Passwort"></form> <?phpendif; //Endif von if($showForm)?>
Woran kann das liegen?
______________________________
Mit freundlichen Grüßen
Simuletsplay