Сделать папки доступными только для избранных пользователей

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

2 ответа

Вы должны использовать.htaccess для управления всеми пользователями с помощью логина и пароля.

Более подробная информация по ссылке: http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

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

Шаг 2: Создайте PHP-файл accessfile.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;
}
Другие вопросы по тегам