$url = 'http://example.com';
$hander_array = get_headers ( $url );
if ($header_array [0] == 'HTTP/1.1 200 OK') {
echo '檔案存在';
} else {
echo '檔案不存在';
}
簡單解釋一下上面的程式碼。 get_headers的作用就是存取一個遠端位址,把伺服器發送的HTTP頭以陣列形式回傳。而$header[0]則是伺服器回傳的狀態碼(如果不出意外的話狀態碼應該都是第一個回傳的)。
要確定一個檔案在遠端伺服器上存在,只需要確定存取這個檔案回傳的狀態碼是"HTTP/1.1 200 OK"就行了(當然你也可以判斷如果狀態碼不是"HTTP/1.1 404 Not Found "的話則文件存在,不過總覺得不保險,畢竟還有其他的諸如301,400這類的狀態碼)。
取得三位HTTP回應碼的範例:
<?php function get_http_response_code($theURL) { $headers = get_headers($theURL); return substr($headers[0], 9, 3); } ?>
排除重新導向的範例:
<?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; } ?>