<?php $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; } ?>