Sont-ils tous stockés dans $_SERVER
? Même sur mesure?
Essaye ça
print_r
($ _ SERVEUR)
Il listera tout dans le tableau
vous pouvez utiliser getallheaders()
pour obtenir un tableau de tous les en-têtes HTTP envoyés.
$headers = getallheaders();
foreach($headers as $key=>$val){
echo $key . ': ' . $val . '<br>';
}
Chaque champ d'en-tête de requête HTTP est dans $_SERVER
(sauf Cookie
) et la clé commence par HTTP_
. Si vous utilisez Apache, vous pouvez également essayer Apache_request_headers
.
Vous pouvez simplement utiliser Apache_request_headers()
ou son alias getallheaders()
.
Utilisation: echo json_encode(getallheaders());
Si la fonction ci-dessus n'existe pas (ancien PHP ou nginx), vous pouvez l'utiliser comme solution de rechange:
<?php
if (!function_exists('getallheaders')){
function getallheaders() {
$headers = '';
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
}
?>
Regardez la variable $ _ SERVER pour voir ce qu'elle contient. La page de manuel liée contient de nombreuses informations utiles, mais aussi simplement var_dump
dessus pour voir ce qu'il contient réellement. Beaucoup d'entrées seront ou ne seront pas remplies, selon ce que le client décide de faire et les bizarreries de PHP. En regardant celui sur mon serveur local, il y a aussi une entrée $ _SERVER ["ALL_HTTP"] qui les répertorie toutes sous forme de chaîne, mais apparemment ce n'est pas standard, car il n'est pas répertorié sur la page de manuel.
vous pouvez utiliser Apache_request_header (); peut-être vous aider.
$headers = Apache_request_headers();
foreach ($headers as $header => $value) {
echo "<pre>";
echo "$header : $value";
echo "</pre>";
}