get_headers
get_headers($url, $associative, $context)
Envoie une requête à l’URL et renvoie un tableau des en-têtes de la réponse, en cas d’échec false. Le premier élément contient la ligne d’état, par exemple « HTTP/1.1 200 OK ».
Paramètres
- $url – l’URL de la page.
- $associative – facultatif, avec true elle renvoie un tableau avec les noms des en-têtes comme clés.
- $context – facultatif, un contexte de stream_context_create() (délai d’attente, méthode HEAD). Depuis PHP 7.1.
Exemples
// $h = get_headers("https://www.garth.cz/");
// echo $h[0]; // HTTP/1.1 200 OK
// avec les noms des en-têtes comme clés
// $h = get_headers("https://www.garth.cz/", true);
// echo $h["Content-Type"]; // text/html; charset=utf-8
// seulement les en-têtes, sans télécharger le corps, et avec un délai d'attente
$context = stream_context_create(array("http" => array("method" => "HEAD", "timeout" => 5)));
var_dump(is_resource($context)); // bool(true)
// $h = get_headers("https://www.garth.cz/", false, $context);
// le code d'état tiré de la première ligne
$status = "HTTP/1.1 301 Moved Permanently";
echo (int) substr($status, 9, 3); // 301
Points d’attention
- La fonction attend la réponse du serveur. Sans contexte avec un délai d’attente, une page indisponible peut retarder le script jusqu’à une minute (default_socket_timeout).
- Elle suit les redirections, le tableau contient les en-têtes de toutes les réponses l’une après l’autre. Dans un tableau associatif, les valeurs de même nom se retrouvent alors dans un tableau.
- La méthode par défaut est GET, le serveur envoie donc aussi toute la page. Un contexte avec la méthode HEAD ne récupère que les en-têtes.
- Elle exige que allow_url_fopen soit activé. Ne transmettez pas sans restriction une URL venant de l’utilisateur – elle pourrait servir à explorer le réseau interne du serveur.
Fonctions associées :
file_get_contents()
parse_url()
header()
curl_init()