2017-01-05 53 views
0

我正在嘗試編寫一個腳本,它將循環訪問一組URL。每個URL直接指向一個jpeg文件。這些圖像不在同一臺服務器上。我發現this question但我不能使用CURL庫(在我的服務器上不活動),並且當我使用@getimagesize時,我發現我的函數對所有圖像都返回false;但是,我發現原因如下:如果我在Web瀏覽器中鍵入有效的URL,系統會提示我對遠程服務器進行身份驗證。如果我在遠程服務器上鍵入一個無效的URL,那麼我會收到404。PHP如何檢測遠程服務器是否請求身份驗證

所以我的問題變成 - 給定一個遠程URL,PHP可以檢測遠程服務器是否提示登錄?如果是這樣,那肯定會比解析有效和經過驗證的URL調用的結果更快。如果沒有,那麼我怎麼才能讓PHP腳本驗證自己以檢查遠程映像?

+0

請參閱http://stackoverflow.com/questions/22002980/using-file-get-contents-to-authenticate-and-access-an-htaccess-protected-file瞭解如何使用'file_get_contents'發送身份驗證標頭。但我不認爲有辦法發現這是失敗的原因。 – Barmar

+0

謝謝。我運行的答案解釋爲查詢$ http_response_header並鏈接到手冊。 – youcantryreachingme

回答

0

file_get_contents()一個HTTP調用會自動創建變量$http_response_header這是一個包含HTTP響應頭的數組。從那裏你可以檢測到是否有錯誤。

See the manual瞭解詳情。

0

取決於身份驗證的類型,如果您在遠程URL上使用get_headers(),它將返回「WWW-Authenticate」並且它應該返回「401 Unauthorized」。

真的,你應該莫維到服務器,捲曲,因爲它可以發送正確的憑據

+0

感謝您的回答 - 我還沒有測試過,但已經接受了其他答案。我們很快關閉了這臺服務器 - 只是最後一分鐘的任務。 – youcantryreachingme

相關問題