2016-10-26 2 views
0

Использование .htacess (deny from all) - разрешено ли только пользователям, которые вошли в мою систему, напрямую обращаться к файлам? Если это имеет значение, мой сайт построен с помощью Drupal (PHP). Если это возможно, то в идеале я бы идеально хотел бы проверить роль пользователя.htaccess - запретить прямой доступ ко всем файлам, кроме зарегистрированных пользователей (PHP)

ответ

0

Вы не можете сделать это с помощью .htaccess. Что вам нужно сделать, это:

  1. Запретить доступ к файлам из всех
  2. Есть «поставщик файл» сценарий, который позволяет файл после аутентификации транзитной пересылки.

Пример:

proxy.php

<?php 
$proxiedDirectory = "./files/"; //Whatever the directory you blocked access to is. 
$filename = isset($_GET["fn"])?$_GET["fn"]:null; 

if ($filename === null || !file_exists($proxiedDirectory.$filename)) { 
    http_response_code(404); 
    exit; 
} 

if (!user_is_authenticated()) { //Not a real method, use your own check 
    http_response_code(403); 
    exit; 
} 


$fp = fopen($proxiedDirectory.$filename, 'rb'); 

header("Content-Type: image/???"); //May need to determine mime type somehow 
header("Content-Length: " . filesize($proxiedDirectory.$filename)); 

fpassthru($fp); 
exit; 

И вы бы использовать это с помощью:

http://example.com/proxy.php?fn=filename.txt

+0

Выглядит хорошо, спасибо :) – Chris

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