Christian Kruse: PHP Socket Problem....

Beitrag lesen

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