prepare('SELECT id, reset_token_hash, reset_expires_at FROM users WHERE email = :email LIMIT 1'); $stmt->execute(['email' => $email]); $user = $stmt->fetch(); $hash = hash('sha256', $token); $valid = $user && !empty($user['reset_token_hash']) && hash_equals((string) $user['reset_token_hash'], $hash) && !empty($user['reset_expires_at']) && strtotime((string) $user['reset_expires_at']) >= time(); if (!$valid) { $errors[] = 'Token invalide ou expiré.'; } else { $update = db()->prepare('UPDATE users SET password_hash = :password_hash, reset_token_hash = NULL, reset_expires_at = NULL, failed_attempts = 0, locked_until = NULL WHERE id = :id'); $update->execute([ 'password_hash' => password_hash($password, PASSWORD_BCRYPT), 'id' => (int) $user['id'], ]); set_flash('success', 'Mot de passe réinitialisé. Vous pouvez maintenant vous connecter.'); redirect('login.php'); } } } render_header('Reset mot de passe', ['description' => 'Valider un token et définir un nouveau mot de passe sur RJLRESAKA.']); ?>

Validation du token

Définir un nouveau mot de passe

Copiez le token reçu puis confirmez un nouveau mot de passe sécurisé.