ホームページ  >  記事  >  バックエンド開発  >  PHPはリモートファイルが存在するかどうかを検出します

PHPはリモートファイルが存在するかどうかを検出します

巴扎黑
巴扎黑オリジナル
2016-11-29 11:43:401069ブラウズ

<?php
$url = &#39;http://example.com&#39;;
$hander_array = get_headers ( $url );
if ($header_array [0] == &#39;HTTP/1.1 200 OK&#39;) {
echo &#39;文件存在&#39;;
} else {
echo &#39;文件不存在&#39;;
}

上記のコードを簡単に説明します。 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 までご連絡ください。