PHPのfile_get_contents関数に関する質問です。

指定URL先がBasic認証をかけていて内容の取得に失敗したとき、
戻り値がfalse以外が返ってくることがありますでしょうか?

現在、file_get_contentsでBasic認証がかかったURL先の取得を試みたとき、
内容の取得に失敗した場合の戻り値がfalseではなく、
HTMLソース(ブラウザでBasic認証に失敗したときの画面のHTML)を
文字列として取得してしまう事象が発生しています。

このような事象に遭遇された方はいらっしゃいますでしょうか?
また、戻り値がfalseになるための施策をご存知であればお教え頂けますか。

PHPのバージョンは 5.2.17 です。

当方、PHP初心者のため、思わぬ勘違いをしているかもしれませんが、
何卒、よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/06/22 21:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:fonya3 No.1

回答回数238ベストアンサー獲得回数10

ポイント50pt

Basic認証がエラーになったときにサーバー側がどのように振る舞うかは、サーバー次第です。例えば、サーバー側でBasic認証の処理をPHPでしてたとしたら、単にエラーをヘッダーで返す事も、エラー表示のHTMLページを表示することも出来ます。ですから対象のURLを処理するサーバーがどのように振る舞うかを想定した処理をする必要があります。

id:sasaki0822

ご回答ありがとうございます。

2011/06/29 03:35:05
id:windofjuly No.2

回答回数2625ベストアンサー獲得回数1149

ポイント50pt

$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ステータスコードは下記参照

http://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89

id:sasaki0822

ご回答ありがとうございます。

2011/06/29 03:35:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません