2013-09-20 4 views
0

Мой сайт имеет форму, в которой пользователи могут загружать документы. Они хранятся в папке www.mysite.com/uploads. Теперь любой, кто набирает этот путь в браузере, может просматривать эти файлы. Я должен был сделать так, чтобы его могли просматривать только люди с доступом. Как мне это сделать? Благодарю.Сделать папки доступными только для пользователей

+0

Используйте '.htaccess' и' .htpasswd' - остановите их прямо на своих дорожках. –

+0

Но если они набирают весь путь i.e: www.mysite.com/uploads/name.doc, они все равно не получат доступ к нему? И как я могу позволить администратору по-прежнему обращаться к папке/файлам. Я использую php btw. –

+0

Как работает ваш PHP? Использование FastCGI или Apache? –

ответ

0

Шаг 1: не загружать файлы в папку внутри DOCROOT. То есть, если ваш корень документа равен /var/www/html, сделайте местоположение для загрузки примерно /var/www/uploads.

Шаг 2: Создайте файл доступа к файлам PHP, который проверяет подлинность администратора и принимает имя файла как параметр $_GET. например http://site.com/accessfile.php?file=myfile.pdf

Внутри accessfile.php, вы можете написать небольшую программу, как показано ниже:

header("Content-Disposition: attachment"); 
file_get_contents("/var/www/uploads/{$file}"); 

Шаг 3: Если администратор должен просмотреть, создать быстрый вариант просмотра:

function &list_directory($dirpath) { 
    if (!is_dir($dirpath) || !is_readable($dirpath)) { 
     error_log(__FUNCTION__ . ": Argument should be a path to valid, readable directory (" . var_export($dirpath, true) . " provided)"); 
     return null; 
    } 
    $paths = array(); 
    $dir = realpath($dirpath); 
    $dh = opendir($dir); 
    while (false !== ($f = readdir($dh))) { 
     if (strpos("$f", '.') !== 0) { // Ignore ones starting with '.' 
      $paths["$f"] = "$dir/$f"; 
     } 
    } 
    closedir($dh); 
    return $paths; 
} 
Смежные вопросы