0 && ($now - $last) < RATE_LIMIT_SEC) { return false; } @file_put_contents($file, (string)$now, LOCK_EX); return true; } /* ===================== ИСПРАВЛЕННАЯ ФУНКЦИЯ ===================== */ function respond(bool $ok): void { // ВАЖНО: разрешаем показ ответа в iframe (если сервер не перебивает заголовки позже) header('Content-Type: text/html; charset=UTF-8'); header('X-Frame-Options: SAMEORIGIN'); // чтобы iframe на этом же домене работал header("Content-Security-Policy: frame-ancestors 'self'"); // на случай CSP header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); header('Pragma: no-cache'); $title = $ok ? 'Сообщение отправлено' : 'Ошибка отправки'; $h1 = $ok ? 'Ваше сообщение принято' : 'Не удалось отправить сообщение'; $p = $ok ? 'Мы свяжемся с вами в ближайшее время.' : 'Пожалуйста, попробуйте позже.'; ?>