загрузка файла из веб-каталога - PullRequest
1 голос
/ 04 января 2010

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

Я отредактировал файл .htaccess в этом каталоге, чтобы защитить эту папку от нежелательных посетителей загружать содержимое вручную, введя полный URL-адрес например: http://www.bkabkabka.com/a/b/c/document.pdf

и это данные .htaccess

Options All -Indexes
<FilesMatch "\.(htaccess|doc|pdf|docx)$">
 Order Allow,Deny
 Deny from all

У меня есть еще одна страница администрирования, которая позволяет ответственному человеку с нашей стороны загружать файлы, отфильтровывая их во все, что он хочет, и затем нажимать ссылку html, чтобы нормально загружать файлы. например:

id             name          filename
1             aaaaa     -->  filename1   <-- this is href link which contains for example http://www.bkabkabka.com/a/b/c/2.doc

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

как я могу это сделать?

спасибо.

Ответы [ 2 ]

4 голосов
/ 04 января 2010

Самый простой способ защитить паролем каталог с помощью Apache - это htpasswd:

добавьте ваш .htaccess в корневой каталог защищенного дерева каталогов:

AuthUserFile /home/user/www/protected/.htpasswd
AuthType Basic
AuthName "Protected"
Require valid-user

затем запустите его из командной строки и введите желаемый пароль:

htpasswd -c /home/user/www/protected/.htpasswd user

Вы можете добавить другого пользователя, например, так:

htpasswd /home/user/www/protected/.htpasswd user2

Чтобы загрузить файлы в этом защищенном каталоге с помощью php, используйте обычную аутентификацию. то есть построить URL-адрес так: http://user:password@server/protected/file.txt

Ваш комментарий, в cpanel есть функция «Защита паролем каталогов», доступная с главной страницы. Вот некоторые подробности об этом:

http://www.siteground.com/tutorials/cpanel/pass_protected_directories.htm

если вы планируете хранить загруженные файлы в защищенном каталоге, вам просто нужно убедиться, что move_uploaded_file скопирует файл в правильный путь, например:

move_uploaded_file($tmpPath, "/home/user/www/protected/$name");
1 голос
/ 04 января 2010

Вы можете указать комбинацию имени пользователя и пароля непосредственно в .htaccess, код PHP не требуется. Это даст вам базовую аутентификацию на уровне HTTP, которая может быть достаточно для вас. Но будьте осторожны, он довольно слабый с точки зрения безопасности. Но это будет держать ленивых людей.

...