2017-01-16 4 views
1

私の場合、イメージファイルのファイルがhtaccessの後ろにあるかどうかを確認する方法はありますか?ファイルがhtaccessの背後にあるかどうかを確認する

イメージsrcへのパスをエコーアウトしようとしています。この場合、ファイルがhtaccessに必要な認証の背後にある場合があります。その場合、私は何も表示しません。今、私はそのイメージを参照しているので、ログイン/パスワードのプロンプトを表示します。

サンプル:

フォルダ2は、必要な認証

$folders = ['folder1','folder2']; 

foreach($folders as $folder){ 

    if(is_readable($folder.'/thumb.png')) 
     echo "<img src='{$folder}/thumb.png' />"; 
    else 
     echo 'img not found'; 

} 

の背後にある私は、両方のはまだプロンプトを提示するように見える、is_readableとfile_existsを試してみました。

編集:htaccessのファイルcURLのようなものを使用して

AuthType Basic 
AuthUserFile /home/.../.htpasswd 
AuthName "Please Log In" 
require valid-user 
+0

htaccessコードを表示できますか? –

+0

ちょうど何も表示されないようにする保護されたフォルダから画像を読み込もうとすると、 –

+0

hmを確認したくない場所から認証を削除するだけで、コンソールには何も表示されませんelse – Sebas

答えて

4

、あなたはHTTPリクエストを送信し、要求コードを見ることができました。 401または403が表示されている場合は、権限がありません。それ以外の場合は問題ありません。

更新:これはget_headers()メソッドを使用する方が簡単です。配列の最初の項目は応答コードで、上で概説したように処理できます。

+1

原則は健全ですが、 'get_headers()'はもっと簡単かもしれません:http://php.net/manual/en/function.get-headers.php - HTTPレスポンスヘッダは、返される配列の最初の項目です。 – CD001

+0

これはいいと思うけど、CD0001と合意し、get_headers()の解決策になり、その後404と401のエラーをチェックするだけでした。サンダーズの反応もうまくいくでしょう。皆さんありがとう。 –

1

あなたは.htaccessファイルを読み込み、必要単語を探したり、あなたの.htaccessファイルが異なる場合があります方法に応じて、賢く何かを行うことができます:あなたはもちろん

if(strpos(file_get_contents($folder."/.htaccess"), "require") === false) 
{ 
    // show image 
} 

:このような

何か各フォルダの出力をキャッシュします。

関連する問題