PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

headers_sent> <header
Last updated: Fri, 10 Oct 2008

view this page in

headers_list

(PHP 5)

headers_listRetourne la liste des en-têtes de réponse du script courant

Description

array headers_list ( void )

headers_list() retourne un tableau avec la liste des en-têtes qui seront transmis au navigateur. Pour déterminer si ces en-têtes ont été déjà envoyés ou pas, utilisez la fonction headers_sent().

Valeurs de retour

Retourne un tableau indexé numériquement d'en-têtes.

Exemples

Exemple #1 Exemple avec headers_list()

<?php

/* setcookie() va ajouter un en-tête */
setcookie('foo''bar');

/* Définit un en-tête de réponse
Il sera ignoré par la majorité des navigateurs */
header("X-Sample-Test: foo");

/* Spécification de la réponse en texte simple */
header('Content-type: text/plain');

/* Quels sont les en-têtes qui vont être envoyés ? */
var_dump(headers_list());

?>

L'exemple ci-dessus va afficher :

array(4) {
  [0]=>
  string(23) "X-Powered-By: PHP/5.1.3"
  [1]=>
  string(19) "Set-Cookie: foo=bar"
  [2]=>
  string(18) "X-Sample-Test: foo"
  [3]=>
  string(24) "Content-type: text/plain"
}



headers_sent> <header
Last updated: Fri, 10 Oct 2008
 
add a note add a note User Contributed Notes
headers_list
slick[ at ]iqlogin[ dot ]net
08-Apr-2008 06:52
To: leo at leoberkhout dot nl,

in PHP 5.0 get_headers() already exists so when i went through your code and organized it i had a small problem with that. Other than that when i changed the function name it worked fine. Of course i did tweak a few minor things to make it so. But this is what i've got.

<?php
   
function gimme_headers($host,$url) {
       
$headers = array();
       
$fp = fsockopen ($host,80,$errno,$errstr,45);
        if(
$fp) {
           
fputs($fp,"GET $url HTTP/1.0\r\n\r\n");
            while(!
feof($fp)) {
               
$char = fgetc($fp);
                if(
$char === "\n") {
                    if(
ord($header) === 13) {
                        return(
$headers);
                    }
                    else {
                       
array_push($headers,trim($header));
                    }
                    unset(
$header);
                }
                else {
                   
$header = $header . $char;
                }
            }
           
fclose ($fp);
        }
    }
    if(isset(
$_GET['uri'])) {
       
$uri = $_GET['uri'];
    }
    else {
       
$uri = 'php.net';
    }
   
$array = gimme_headers($uri, "/");
    print
'Cookie list for ' . $uri;
    print
'<ul>';
    foreach (
$array as $key => $value) {
        print
'<li>' . $_SERVER[$key] . ' = ' . $value . '</li>';
    }
    print
'</ul>';
?>
leo at leoberkhout dot nl
23-Oct-2006 10:40
If I change in de above code "php.net" for antoher URL, de code doesn't work properly.

How can it be made in a way like this:
http://webtools.live2support.com/header.php

I spent a hole evening, but I found only a way to make the output more readable:

<?php

function get_headers($host, $url)
{
$headers = array();

$fp = fsockopen ($host, 80, $errno, $errstr, 45);
if (
$fp)
{
fputs ($fp, "GET $url HTTP/1.0\r\n\r\n");
while (!
feof($fp))
{
$char = fgetc($fp);
if(
$char === "\n")
{
if (
ord($header) === 13) { return($headers); }
else {
array_push($headers, trim($header)); }
unset(
$header);
}
else {
$header = $header.$char; }
}
fclose ($fp);
}
}

$Array = get_headers("php.net", "/");

// print_r(get_headers("php.net", "/"));
echo "<P>\n";

    foreach (
$Array as $Key => $Value)
    {
        echo
"<LI>\$_SERVER[\"$Key\"]=$Value\n";
        if (
$Key == 6)
         
$Cookie = $Value;
    }
# End of foreach ($_SERVER as $Key=>$Value)
 
echo "<P>\n";
  echo
"Cookie = $Cookie<BR>\n";
?>

Here I do a check with, for example, key 6, to seperated them from the other values, just for example.

My problem is that the code does not accept www.mysite.com or http://www.mysite.com
robertbienert at gmx dot net
27-Sep-2006 03:59
Also note that Lukes code could be simplified if using the HTTP HEAD method, because it returns only the HTTP headers, not the whole resource.
Luke at Bonanomi dot com
02-Sep-2006 03:56
I arrived here looking for a way to collect headers sent by a remote server. No such luck; so:

<?php
function get_headers($host, $url)
{
  
$headers = array();

  
$fp = fsockopen ($host, 80, $errno, $errstr, 45);
   if (
$fp)
   {
     
fputs ($fp, "GET $url HTTP/1.0\r\n\r\n");
      while (!
feof($fp))
      {
        
$char = fgetc($fp);
         if(
$char === "\n")
         {
            if (
ord($header) === 13) {  return($headers); }
            else {
array_push($headers, trim($header)); }
            unset(
$header);
         }
         else {
$header = $header.$char; }
      }
     
fclose ($fp);
   }
}
?>

print_r(get_headers("php.net", "/"));

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Date: Sat, 02 Sep 2006 13:47:02 GMT
    [2] => Server: Apache/1.3.37 (Unix) PHP/5.2.0-dev
    [3] => X-Powered-By: PHP/5.2.0-dev
    [4] => Last-Modified: Sat, 02 Sep 2006 13:21:09 GMT
    [5] => Content-language: en
    [6] => Set-Cookie: COUNTRY=USA%2C68.37.136.230; expires=Sat, 09-Sep-2006 13:47:02 GMT; path=/; domain=.php.net
    [7] => Connection: close
    [8] => Content-Type: text/html; charset=utf-8
)

headers_sent> <header
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites