Hallo und guten Morgen,
Hallo und guten Morgen,
ich habe mir da eine Requestfunktion zusammengebastelt, die leider nicht bei allen Seiten funktioniert. Es gibt welche, da kommen nur die Header und kein Content.
Bei http://forum.selfhtml.org steht über dem Content "1c82" und darunter eine "0".
Leider finde ich den Fehler nicht, bzw. verstehe die Logik nicht, nach der bei manchen Requests eben nur die Header kommen.
<?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 = ''; $_headers = array(); while (!feof($fp) && (false !== ($line = fgets($fp, 1024)))) { if ($headerflag) { if ($line == "\r\n") { $headerflag = false; continue; } $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); echo "<pre>\r\n"; echo htmlspecialchars(print_r($_page['headers'], 1)) . "\r\n"; echo "<hr>\r\n"; echo htmlspecialchars($_page['body']); echo "</pre>\r\n"; ?>
mit dem Simpelscript bekomme ich bei den Requests allerdings Antwort:
<?php
echo file_get_contents('http://example.org');
?>
Was macht denn file_get_contents da anders?
Grüße
TS