0, 'start' => $now]; if (($now - $record['start']) >= $windowSeconds) { $record = ['count' => 1, 'start' => $now]; } else { $record['count']++; } $_SESSION[$key] = $record; // Set Rate Limit Headers header("X-RateLimit-Limit: {$maxRequests}"); header("X-RateLimit-Remaining: " . max(0, $maxRequests - $record['count'])); header("X-RateLimit-Reset: " . ($record['start'] + $windowSeconds)); if ($record['count'] > $maxRequests) { Response::error("Too Many Requests: ท่านส่งคำขอเข้ามาถี่เกินไป กรุณารอ 1 นาทีก่อนลองใหม่อีกครั้ง (DDOS Protection)", 429); } } }