$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과 같은 다른 상태 코드가 있습니다.
3자리 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; } ?>