prepare("SELECT id, name, email FROM users WHERE email = ?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { // Verwijder eventuele eerdere openstaande reset tokens voor dit e-mailadres $stmtClean = $db->prepare("DELETE FROM password_resets WHERE email = ? AND used_at IS NULL"); $stmtClean->execute([$email]); // Genereer veilig uniek token $token = bin2hex(random_bytes(32)); $expiresAt = date('Y-m-d H:i:s', strtotime('+1 hour')); $stmtInsert = $db->prepare(" INSERT INTO password_resets (email, token, expires_at) VALUES (?, ?, ?) "); $stmtInsert->execute([$email, $token, $expiresAt]); // Bouw herstel-URL $baseUrl = rtrim(APP_URL, '/'); $resetUrl = "{$baseUrl}/auth/reset-password.php?token={$token}"; // Verstuur herstelmail via de nieuwe FocizMailer $mailResult = FocizMailer::sendPasswordResetEmail($user['email'], $user['name'], $resetUrl); if (!$mailResult['success']) { error_log("Fout bij verzenden wachtwoordherstel mail naar {$email}: " . ($mailResult['error'] ?? 'Onbekend')); } } // Anti-enumeratie: Toon altijd succes ongeacht of het e-mailadres bestaat $submitted = true; } catch (Throwable $e) { error_log("Wachtwoord vergeten fout: " . $e->getMessage()); $error = "Er is een technische fout opgetreden. Probeer het over enkele ogenblikken opnieuw."; } } } $pageTitle = "Fociz — Wachtwoord Vergeten"; ?>
Geen probleem. Vul uw e-mailadres in en we sturen u een veilige herstellink.
💡 Tip: Heeft u na enkele minuten nog niets ontvangen?