PHP偵測遠端檔案是否存在

巴扎黑
發布: 2016-11-24 15:15:54
原創
945 人瀏覽過

$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(&#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;  
}  
?>
登入後複製


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!