$url = 'http://example.com';
$hander_array = get_headers ( $url );
if ($ header_array [0] == 'HTTP/1.1 200 OK') {
echo 'Datei existiert';
} else {
echo 'Datei existiert nicht';
}
Erläutern Sie kurz den obigen Code. Die Funktion von get_headers besteht darin, auf eine Remote-Adresse zuzugreifen und die vom Server gesendeten HTTP-Header in Form eines Arrays zurückzugeben. Und $header[0] ist der vom Server zurückgegebene Statuscode (wenn nichts anderes passiert, sollte der Statuscode der erste sein, der zurückgegeben wird).
Um zu bestätigen, dass eine Datei auf dem Remote-Server vorhanden ist, stellen Sie einfach sicher, dass der durch den Zugriff auf die Datei zurückgegebene Statuscode „HTTP/1.1 200 OK“ lautet (Sie können natürlich auch feststellen, ob der Statuscode nicht vorhanden ist). „HTTP/ 1.1 404 Not Found“ bedeutet, dass die Datei existiert, sich aber immer unsicher anfühlt. Schließlich gibt es auch andere Statuscodes wie 301, 400.
Beispiel für den Erhalt eines dreistelligen HTTP-Antwortcodes:
<?php function get_http_response_code($theURL) { $headers = get_headers($theURL); return substr($headers[0], 9, 3); } ?>
Beispiel für den Ausschluss einer Umleitung:
<?php /** * Fetches all the real headers sent by the server in response to a HTTP request without redirects * 获取不包含重定向的报头 */ function get_real_headers($url,$format=0,$follow_redirect=0) { if (!$follow_redirect) { //set new default options $opts = array('http' => array('max_redirects'=>1,'ignore_errors'=>1) ); stream_context_get_default($opts); } //get headers $headers=get_headers($url,$format); //restore default options if (isset($opts)) { $opts = array('http' => array('max_redirects'=>20,'ignore_errors'=>0) ); stream_context_get_default($opts); } //return return $headers; } ?>