setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Benutzer anhand von Vorname und Nachname abrufen $statement = $pdo->prepare("SELECT PrincipalID, Email FROM UserAccounts WHERE FirstName = :FirstName AND LastName = :LastName"); $statement->execute(['FirstName' => $osVorname, 'LastName' => $osNachname]); $user = $statement->fetch(PDO::FETCH_ASSOC); if (!$user) { echo "Benutzer nicht gefunden."; exit; } $email = $user['Email']; $principalID = $user['PrincipalID']; // Verifizierungscode generieren (als Variable, nicht in der Datenbank speichern) $activationCode = generateActivationCode(); // E-Mail an den Benutzer senden $subject = "Ihr Freischaltcode für " . SITE_NAME; $message = "Hallo $osVorname $osNachname,\n\n"; $message .= "Ihr Freischaltcode lautet: $activationCode\n\n"; $message .= "Bitte verwenden Sie diesen Code, um Ihr Passwort auf " . BASE_URL . " zu ändern.\n\n"; $message .= "Mit freundlichen Grüßen,\n"; $message .= SITE_NAME; $headers = "From: noreply@" . parse_url(BASE_URL, PHP_URL_HOST) . "\r\n"; $headers .= "Content-Type: text/plain; charset=UTF-8\r\n"; if (mail($email, $subject, $message, $headers)) { echo "Die E-Mail wurde an $email gesendet. Bitte schauen Sie in Ihren E-Mail-Account."; $showCard1 = false; // Card1 ausblenden $showCard2 = true; // Card2 anzeigen } else { echo "Fehler beim Senden der E-Mail."; } } catch (PDOException $e) { echo "Fehler: " . $e->getMessage(); } } else { // Passwort ändern $osVorname = $_SESSION['osVorname']; // Werte aus der Session abrufen $osNachname = $_SESSION['osNachname']; $activationCode = trim($_POST["activationCode"]); $newPassword = trim($_POST["newPassword"]); if (empty($osVorname) || empty($osNachname) || empty($activationCode) || empty($newPassword)) { echo "Bitte füllen Sie alle Felder aus."; exit; } try { // Datenbankverbindung herstellen $pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Benutzer anhand des Vor- und Nachnamens suchen $statement = $pdo->prepare("SELECT PrincipalID FROM UserAccounts WHERE FirstName = :FirstName AND LastName = :LastName"); $statement->execute(['FirstName' => $osVorname, 'LastName' => $osNachname]); $user = $statement->fetch(PDO::FETCH_ASSOC); if (!$user) { echo "Benutzer nicht gefunden."; exit; } $principalID = $user['PrincipalID']; // Generiere ein neues Salt und Hash für das neue Passwort $newSalt = ospswdsalt(); // Funktion aufrufen $newHash = ospswdhash($newPassword, $newSalt); // Funktion aufrufen // Passwort in der Tabelle `auth` aktualisieren $updateStatement = $pdo->prepare("UPDATE auth SET passwordHash = :passwordHash, passwordSalt = :passwordSalt WHERE UUID = :UUID"); $updateStatement->execute([ 'passwordHash' => $newHash, 'passwordSalt' => $newSalt, 'UUID' => $principalID ]); echo "Passwort erfolgreich geändert."; } catch (PDOException $e) { echo "Fehler: " . $e->getMessage(); } // Datenbankverbindung schließen $pdo = null; } } ?> Passwort ändern

New Password verify





New Password now