1. <?php
  2. /**
  3. * Parses request headers with verbose logging.
  4. *
  5. * @param array $headers The array of request headers.
  6. * @return array An associative array of parsed headers.
  7. */
  8. function parseRequestHeaders(array $headers): array
  9. {
  10. $parsedHeaders = [];
  11. foreach ($headers as $header => $values) {
  12. // Log the header name.
  13. error_log("Header: " . $header);
  14. //If multiple values are present, log them.
  15. if (is_array($values)) {
  16. error_log(" Values: " . implode(", ", $values));
  17. } else {
  18. error_log(" Value: " . $values);
  19. }
  20. // Basic header parsing (can be extended)
  21. if ($header === 'User-Agent') {
  22. $parsedHeaders['user_agent'] = $values; // Store User-Agent
  23. } elseif ($header === 'Content-Type') {
  24. $parsedHeaders['content_type'] = $values; //Store Content-Type.
  25. } elseif ($header === 'Host') {
  26. $parsedHeaders['host'] = $values;
  27. } else {
  28. $parsedHeaders[$header] = $values; // Store other headers
  29. }
  30. }
  31. //Log the entire parsed headers array
  32. error_log("Parsed Headers: " . json_encode($parsedHeaders));
  33. return $parsedHeaders;
  34. }
  35. //Example Usage (for testing - remove for production)
  36. if (isset($_SERVER['HTTP_HOST'])) {
  37. $requestHeaders = getallheaders(); // Get all request headers
  38. $parsed = parseRequestHeaders($requestHeaders);
  39. print_r($parsed);
  40. } else {
  41. error_log("No HTTP_HOST header found. No headers to parse.");
  42. }
  43. ?>

Add your comment