Hallo,
Ich Bau via Socket eine Verbindung zu nem Webserver auf (funktion unten)
Warum benutzt du nicht den fopen()-Wrapper?
$fd = fopen('http://url/','r');
if(!$fd) die("error!");
$str = '';
while($line = fread($fd,512)) {
$str .= $line;
}
function readurl($url)
{
$url = eregi_replace("http://","",$url);
besser preg_replace()
$do_be = @strpos($url,"/");
$server = substr($url,0,$do_be);
$document = substr($url,$do_be);
$port=80;
Was, wenn der Port nicht 80 ist?
$header = <<<header
GET $document HTTP/1.1
Accept: */*
Den Header wuerde ich eher weglassen wollen als */* zu schicken.
Accept-Language: de
User-Agent: Test-Script (by RFZ)
Host: $server
Connection: Close
header;
Hier ist ein Newline zu viel. Nur eine Leerzeile!
while (!feof($fp)) {
$body = $body. fgets ($fp,128);
Nimm fread() statt fgets(). Nicht jede Zeile hat Zeilenenden...
if(substr($body,0,12) !="HTTP/1.1 200") $body = false;
Was ist bei einer 1.0-Antwort? Kann passieren, aus verschiedensten Gruenden. Ein Fall fuer
preg_match()...
$head_end = strpos($body,"\r\n\n") + 3;
du meinst IMHO strpos($body,"\015\012\015\012") + 4;
Gruesse,
CK