指定URL先がBasic認証をかけていて内容の取得に失敗したとき、
戻り値がfalse以外が返ってくることがありますでしょうか?
現在、file_get_contentsでBasic認証がかかったURL先の取得を試みたとき、
内容の取得に失敗した場合の戻り値がfalseではなく、
HTMLソース(ブラウザでBasic認証に失敗したときの画面のHTML)を
文字列として取得してしまう事象が発生しています。
このような事象に遭遇された方はいらっしゃいますでしょうか?
また、戻り値がfalseになるための施策をご存知であればお教え頂けますか。
PHPのバージョンは 5.2.17 です。
当方、PHP初心者のため、思わぬ勘違いをしているかもしれませんが、
何卒、よろしくお願いいたします。
Basic認証がエラーになったときにサーバー側がどのように振る舞うかは、サーバー次第です。例えば、サーバー側でBasic認証の処理をPHPでしてたとしたら、単にエラーをヘッダーで返す事も、エラー表示のHTMLページを表示することも出来ます。ですから対象のURLを処理するサーバーがどのように振る舞うかを想定した処理をする必要があります。
$http_response_header にサーバーから返されたヘッダー情報が入ってますので、file_get_contents の直後に $http_response_header[0] に入っているステータスコードを読み取って、HTTPステータスコードによって処理を分けるようにすればよいでしょう
まずは、下記のような単純なスクリプトを書いて、BASIC認証がかかっているサイトにアクセスすると $http_response_headerに何が入ってくるかをテストしてみるといいでしょう
<?php file_get_contents("URL"); var_dump($http_response_header);
HTTPステータスコードは下記参照
ご回答ありがとうございます。
ご回答ありがとうございます。