prepare(" SELECT pr.*, u.name, u.email as user_email FROM password_resets pr JOIN users u ON pr.email = u.email WHERE pr.token = ? AND pr.used_at IS NULL AND pr.expires_at > NOW() "); $stmt->execute([$token]); $resetRecord = $stmt->fetch(); } $error = null; $success = false; if ($_SERVER['REQUEST_METHOD'] === 'POST' && $resetRecord) { $password = $_POST['password'] ?? ''; $confirmPassword = $_POST['confirm_password'] ?? ''; if (empty($password)) { $error = "Vul een nieuw wachtwoord in."; } elseif (($pwErr = fociz_validate_password($password)) !== null) { $error = $pwErr; } elseif ($password !== $confirmPassword) { $error = "De wachtwoorden komen niet overeen."; } else { try { $db->beginTransaction(); $newHash = password_hash($password, PASSWORD_DEFAULT); // 1. Update wachtwoord van de gebruiker en reset remember tokens $stmtUser = $db->prepare(" UPDATE users SET password_hash = ?, remember_token = NULL, remember_token_expires_at = NULL WHERE email = ? "); $stmtUser->execute([$newHash, $resetRecord['user_email']]); // 2. Markeer reset token als verbruikt $stmtToken = $db->prepare("UPDATE password_resets SET used_at = NOW() WHERE token = ?"); $stmtToken->execute([$token]); $db->commit(); $success = true; fociz_log_audit(null, 'PASSWORD_RESET_COMPLETED', 'user', null, ['email' => $resetRecord['user_email']], 'SUCCESS', $resetRecord['user_email']); } catch (Throwable $e) { if ($db->inTransaction()) $db->rollBack(); error_log("Fout bij resetten wachtwoord: " . $e->getMessage()); $error = "Er is een fout opgetreden bij het opslaan van uw nieuwe wachtwoord."; } } } $pageTitle = "Fociz — Wachtwoord Opnieuw Instellen"; ?> <?= htmlspecialchars($pageTitle) ?>

Herstellink Ongeldig

Deze wachtwoordherstellink is ongeldig, verlopen (langer dan 60 minuten geleden aangevraagd) of al eerder gebruikt.

Wachtwoord Gewijzigd!

Uw nieuwe wachtwoord is succesvol opgeslagen. U kunt nu direct inloggen in Fociz.

Inloggen met Nieuw Wachtwoord

Nieuw Wachtwoord

Kies een nieuw veilig wachtwoord voor

Minimaal 12 tekens (incl. hoofdletter, kleine letter, cijfer en speciaal teken).

Annuleren en terug naar inloggen
Beveiligd met end-to-end authenticatie • Fociz 2026