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>';
?>
headers_list
(PHP 5)
headers_list — Gönderilmiş (veya gönderilmeye hazır) yanıt başlıklarının listesiyle döner
Açıklama
array headers_list
( void
)
headers_list() işlevi, tarayıcıya veya istemciye gönderilen başlıkların listesini döndürür. Bu başlıkların henüz gönderilip gönderilmediğini headers_sent() işleviyle öğrenebilirsiniz.
Dönen Değerler
Başlıkları içeren sayısal indisli bir dizi döndürür.
Örnekler
Örnek 1 - headers_list() kullanım örneği
<?php
/* setcookie() kendisi için bir yanıt başlığı ekler */
setcookie('foo', 'bar');
/* Özel bir yanıt başlığı tanımlayalım.
Bunu çoğu istemci yok sayar. */
header("X-Sample-Test: foo");
/* Yanıtımız salt metin içerdiğini belirtelim */
header('Content-type: text/plain');
/* Hangi başlıklar gönderiliyor? */
var_dump(headers_list());
?>
Yukarıdaki örneğin çıktısı:
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"
}
Ayrıca Bakınız
- headers_sent() - Başlıklar gönderilmiş mi, gönderilmişse nerede gönderilmiş diye bakar
- header() - Ham bir HTTP başlığı gönderir
- setcookie() - Bir çerez gönderir
- apache_response_headers() - Tüm HTTP yanıt başlıklarını alır
headers_list
slick[ at ]iqlogin[ dot ]net
08-Apr-2008 04:52
08-Apr-2008 04:52
leo at leoberkhout dot nl
23-Oct-2006 08:40
23-Oct-2006 08: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 01:59
27-Sep-2006 01: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 01:56
02-Sep-2006 01: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
)
