PHP: headers_list - Manual

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: Sat, 27 Jan 2007

view this page in

# headers_list

(PHP 5)

headers_list -- Returns a list of response headers sent (or ready to send)

## Description

array headers_list ( void )

headers_list() will return a numerically indexed array of headers to be sent to the browser / client. To determine whether or not these headers have been sent yet, use headers_sent().

Пример 1. Examples using headers_list()

`<?php
/* setcookie() will add a response header on its own */
setcookie('foo', 'bar');
/* Define a custom response header
This will be ignored by most clients */
header("X-Sample-Test: foo");
/* Specify plain text content in our response */
header('Content-type: text/plain');
/* What headers are going to be sent? */
var_dump(headers_list());
?>`

this will output :

    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"
    }

See Also: headers_sent(), header(), and setcookie().

add a note User Contributed Notes
headers_list
leo at leoberkhout dot nl
23-Oct-2006 01: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 06: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 06: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
)`
add a note
headers_sent header

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST