Moin!
Zu erst habe ich das mal sauber eingerückt ...
<?php ### get_page.php
#==================================================================================================
function get_page($url, $format=0) {
$url = parse_url($url);
$host = isset($url['host']) ? $url['host'] : '';
$port = isset($url['port']) ? $url['port'] : 80;
$path = (isset($url['path']) ? $url['path'] : '/') . (isset($url['query']) ? '?' . $url['query'] : '');
$fp = fsockopen($host, $port, $errno, $errstr, 3);
if ($fp) {
$hdr = "GET $path HTTP/1.1\r\n";
$hdr .= "Host: $host \r\n";
# $hdr .= "Cookie: PHPSESSID=9d97b2ff179ed2e6897a197a2c6a0785";
$hdr .= "Connection: Keep-Alive\r\n\r\n";
fwrite($fp, $hdr);
$headerflag = true;
$body = array();
$_headers = array();
while (!feof($fp) && (false !== ($line = fgets($fp, 1024)))) {
if ($headerflag) {
if ($line == "\r\n") {
$headerflag = false;
} else {
$line = trim($line);
$_headerline = explode(': ', $line, 2);
if ($format) {
if (isset($_headerline[1])) {
$_headers[$_headerline[0]] = $_headerline[1];
} elseif (strpos(strtoupper($_headerline[0]), 'HTTP') === 0 ) {
$_http = explode(' ', $_headerline[0]);
$_headers['version'] = $_http[0];
$_headers['status'] = (isset($_http[1])?$_http[1]:'900');
$_headers['message'] = (isset($_http[2])?$_http[2]:'');
} else {
$_headers[] = $_headerline[0];
}
} else {
$_headers[] = $line;
}
}
} else {
$body[] = $line;
}
}
fclose($fp);
return array('headers' => $_headers, 'body' => $body);
}
return false;
}
#================================================================================================
$_page = get_page('http://forum.selfhtml.org', 1);
var_dump($_page['headers']);
array_shift($_page['body']);
array_pop($_page['body']);
array_pop($_page['body']);
echo implode('', $_page['body']);
ein wenig bereinigt und manches auch so verrückt ... und dann gesehen: geht doch. Warum jetzt manchmal nur ein header kommt und kein Inhalt? Was steht denn dann in den headern?
Jörg Reinholz