<?php
/**
* Parses request headers with verbose logging.
*
* @param array $headers The array of request headers.
* @return array An associative array of parsed headers.
*/
function parseRequestHeaders(array $headers): array
{
$parsedHeaders = [];
foreach ($headers as $header => $values) {
// Log the header name.
error_log("Header: " . $header);
//If multiple values are present, log them.
if (is_array($values)) {
error_log(" Values: " . implode(", ", $values));
} else {
error_log(" Value: " . $values);
}
// Basic header parsing (can be extended)
if ($header === 'User-Agent') {
$parsedHeaders['user_agent'] = $values; // Store User-Agent
} elseif ($header === 'Content-Type') {
$parsedHeaders['content_type'] = $values; //Store Content-Type.
} elseif ($header === 'Host') {
$parsedHeaders['host'] = $values;
} else {
$parsedHeaders[$header] = $values; // Store other headers
}
}
//Log the entire parsed headers array
error_log("Parsed Headers: " . json_encode($parsedHeaders));
return $parsedHeaders;
}
//Example Usage (for testing - remove for production)
if (isset($_SERVER['HTTP_HOST'])) {
$requestHeaders = getallheaders(); // Get all request headers
$parsed = parseRequestHeaders($requestHeaders);
print_r($parsed);
} else {
error_log("No HTTP_HOST header found. No headers to parse.");
}
?>
Add your comment