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 (strlen($password) < 8) { $error = "Het wachtwoord moet minimaal 8 tekens lang zijn."; } 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; } 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

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