>  기사  >  백엔드 개발  >  PHP는 원격 파일이 존재하는지 감지합니다.

PHP는 원격 파일이 존재하는지 감지합니다.

巴扎黑
巴扎黑원래의
2016-11-24 15:15:54942검색

$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(&#39;http&#39; =>  
        array(&#39;max_redirects&#39;=>1,&#39;ignore_errors&#39;=>1)  
    );  
    stream_context_get_default($opts);  
  }  
  //get headers  
    $headers=get_headers($url,$format);  
    //restore default options  
  if (isset($opts)) {  
    $opts = array(&#39;http&#39; =>  
        array(&#39;max_redirects&#39;=>20,&#39;ignore_errors&#39;=>0)  
    );  
    stream_context_get_default($opts);  
  }  
  //return  
    return $headers;  
}  
?>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.