У меня есть сценарий, который позволяет только авторизованным пользователям загружать файлы на определенную папку.
Однако я не знаю, как препятствовать тому, чтобы люди загрузили свободно без входа в систему.
Мне нужно решение в php.
Я погуглил вокруг, но ничто прямое пока еще.
В настоящее время в моем корне документа у меня есть папка, названная администратором и подпапкой, названной загрузками в администраторе. Таким образом, только администраторская роль может загрузить. И редактор и администратор могут загрузить. Что я должен сделать в этом случае?
Советуйте.
Поместите файлы где-нибудь за пределами общедоступного корневого каталога или настройте сервер так, чтобы файлы не обслуживались. Пока ваш сервер будет успешно обслуживать все с действующим URL-адресом, вы ничего не можете сделать с PHP, чтобы предотвратить это.
Если ваши файлы находятся в папке / public_html /
, выньте их из этой папки и поместите, например, в / secret_files /
, поэтому ваша структура каталогов выглядит примерно так:
public_html/
index.html
admin/
admin_index.php
secret_files/
my_secret_file.txt
Веб-сервер настроен только для обслуживания файлов в каталоге / public_html /
, поэтому никто не будет иметь доступа к каталогам за пределами (технический термин выше ) it.
Чтобы кто-то по-прежнему мог загружать эти файлы, сделайте так, как предлагает cletus, и используйте readfile
для «ручного обслуживания» файлов с помощью сценария PHP. PHP по-прежнему будет иметь доступ к этим другим частям файловой системы, поэтому вы можете использовать его в качестве привратника.
Не храните файлы в каталоге под корнем документа.
Вместо этого переместите их в другое место, и тогда сценарий PHP может программно определить, может ли кто-нибудь их загрузить, а затем использовать readfile ()
или что-то подобное для потоковой передачи их пользователю.
Вы также можете настроить веб-сервер так, чтобы он не обслуживал файлы из этого каталога, но тогда вам все равно понадобится PHP для их обслуживания. Лучше просто не класть их под корень документа.
Ответ на вопрос о том, как защитить паролем с помощью PHP: Этот должен решить вашу проблему.