1. <?php
  2. /**
  3. * Validates response headers configuration for development environment.
  4. * Gracefully handles failures.
  5. *
  6. * @param array $expectedHeaders Array of expected headers and their values.
  7. * @return bool True if all headers are valid, false otherwise.
  8. */
  9. function validateResponseHeaders(array $expectedHeaders): bool
  10. {
  11. $responseHeaders = getallheaders(); // Get current response headers.
  12. foreach ($expectedHeaders as $headerName => $expectedValue) {
  13. if (isset($responseHeaders[$headerName])) {
  14. if ($responseHeaders[$headerName] !== $expectedValue) {
  15. error_log("Invalid header: " . $headerName . ". Expected: " . $expectedValue . ", Got: " . $responseHeaders[$headerName]);
  16. return false; // Header validation failed.
  17. }
  18. } else {
  19. error_log("Missing header: " . $headerName);
  20. return false; // Header is missing.
  21. }
  22. }
  23. return true; // All headers are valid.
  24. }
  25. /**
  26. * Example usage (development only).
  27. */
  28. if (isset($_SERVER['PHP_VERSION'])) { //Check PHP version
  29. if (version_compare($_SERVER['PHP_VERSION'], '7.0', '>=')) {
  30. // Example expected headers for development (adjust as needed).
  31. $expectedHeaders = [
  32. 'X-Powered-By' => 'PHP/7.4',
  33. 'Content-Type' => 'application/json',
  34. 'Access-Control-Allow-Origin' => '*',
  35. ];
  36. if (validateResponseHeaders($expectedHeaders)) {
  37. error_log("Response headers are valid.");
  38. } else {
  39. error_log("Response headers are invalid. Check configuration.");
  40. }
  41. } else {
  42. error_log("This script requires PHP 7.0 or higher.");
  43. }
  44. }
  45. ?>

Add your comment