2017-01-16 7 views
1

Есть ли способ проверить, находится ли файл, в моем случае файл изображения, за htaccess?Проверка наличия файла позади htaccess

Я пытаюсь отследить путь к изображению src, где в некоторых случаях файл будет находиться за требуемой аутентификацией htaccess. В этом случае я хочу, чтобы он ничего не отображал. Сейчас он представляет приглашение для входа/пароля, потому что я ссылаюсь на это изображение.

Пример:

folder2 позади требуется аутентификация

$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

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

Вы можете показать свой код htaccess? –

+0

просто удалите аутентификацию из тех папок, откуда вы не хотите проверять –

+0

hm хорошо, если вы попытаетесь загрузить изображение из защищенной папки, оно просто ничего не покажет, и у вас будет 401 в консоли, ничего else – Sebas

ответ

4

Используя что-то вроде локон, вы можете отправить запрос HTTP и посмотреть код запроса. Если он показывает 401 или 403, он несанкционирован. В противном случае все в порядке.

UPDATE: Для этого было бы проще использовать метод 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 
} 

Конечно вы «Я хочу кэшировать вывод для каждой папки.

Смежные вопросы