从Web目录下载文件

时间:2010-01-04 16:06:24

标签: php security http authentication .htaccess

我有一个表单,允许用户将一些文件上传到文件夹。

我编辑该目录中的.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修改正在应用globaly,我想创建像这个文件夹的用户名和密码,然后使用 PHP 代码连接到此文件夹,并能够下载文件通常

我该怎么做?

谢谢。

2 个答案:

答案 0 :(得分:4)

使用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下载此受保护目录中的文件,使用基本身份验证。这样就构建了一个网址: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 :(得分:1)

您实际上可以指定username/password combination directly in .htaccess,不需要PHP代码。这将为您提供基本的HTTP级别身份验证,这对您来说可能已经足够了。但要注意,从安全角度来看,它相当薄弱。但它会让懒惰的人离开。