Intereting Posts
Я хочу отобразить список пользовательских таксономий на главной странице WordPress Как передать значения массива PHP в другой файл с помощью jQuery Ajax? получить идентификатор из выпадающего тега select для вставки в ссылку получить ширину экрана в javascript-переменную и отправить ее через ajax на php-страницу, чтобы избежать загрузки страницы Как перемещать разделенные запятыми идентификаторы из одной строки в другую? Уменьшение алфавитных значений Форматирование текстового файла в формате JSON в PHP Сложные функции миграции MongoDB 3.2 до 3.4 в PHP Как установить значение по умолчанию для поля формы в Symfony2? Масштабирование приложения чата – короткий опрос и длительный опрос (AJAX, PHP) Удаление записей, выбранных флажком Ошибка «действующее ограничение open_basedir» twilio say глагол, вложенный в глагол набора Понимание того, что \ u0000 находится в PHP / JSON и избавиться от него Массив для преобразования строк в PHP

Как предотвратить общую загрузку файлов с помощью php?

У меня есть сценарий, который позволяет только авторизованным пользователям загружать файлы в определенную папку.

Однако я не знаю, как запретить пользователям свободно скачивать файлы без логина.

Мне нужно решение в php.

У меня есть googled вокруг, но ничего прямо вперед пока.

В настоящее время в моем корневом документе у меня есть папка с именем admin и подпапка под названием uploads внутри администратора. Таким образом, может загружаться только роль администратора. Как редактор, так и администратор могут загрузить. Что мне делать в этом случае?

Пожалуйста, порекомендуйте.

Solutions Collecting From Web of "Как предотвратить общую загрузку файлов с помощью php?"

Поместите файлы где-нибудь за пределы общедоступного каталога webroot или настройте сервер, чтобы он не обслуживал файлы. Пока ваш сервер будет счастливо обслуживать все с допустимым URL-адресом, вы ничего не можете сделать с PHP, чтобы это предотвратить.


Если ваши файлы находятся в папке /public_html/ , выньте их из этой папки и поместите их в eg /secret_files/ , поэтому ваша структура каталогов выглядит примерно так:

 public_html/ index.html admin/ admin_index.php secret_files/ my_secret_file.txt 

Веб-сервер настроен только на обслуживание файлов в каталоге /public_html/ , поэтому никто не будет иметь доступ к каталогам за пределами (технический термин выше ).

Чтобы позволить кому-то загружать эти файлы, сделайте так, как подсказывает cletus, и используйте readfile для «ручной подачи» файлов через PHP-скрипт. PHP все равно будет иметь доступ к этим другим частям файловой системы, поэтому вы можете использовать его в качестве гейткипера.

Не храните файлы в каталоге под корнем документа.

Вместо этого переместите их в другое место, а затем скрипт PHP может программным образом определить, может ли кто-то их загрузить, а затем использовать readfile() или что-то подобное, чтобы readfile() их пользователю.

Вы также можете настроить веб-сервер для того, чтобы не обслуживать файлы из этого каталога, но тогда вам понадобится PHP для их обслуживания. Чище просто не ставить их под корень документа.

Ответ на вопрос о том, как защитить паролем PHP: это должно решить вашу проблему.