人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

●質問者: sasaki0822
●カテゴリ:インターネット ウェブ制作
✍キーワード:BASIC認証 HTML PHP URL いるか
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● fonya3
●50ポイント

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

◎質問者からの返答

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


2 ● うぃんど
●50ポイント

$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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ