【问题标题】:downloading a file from a web directory从 Web 目录下载文件
【发布时间】:2011-01-01 07:23:26
【问题描述】:

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

我已编辑该目录中的 .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 代码连接到这个文件夹并能够下载文件正常。

我该怎么做?

谢谢。

【问题讨论】:

    标签: php security http authentication .htaccess


    【解决方案1】:

    使用 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");
    

    【讨论】:

    • 目前我正在使用 cpanel 来控制我们从 ISP 购买的我们公司的主机包。所以我不知道我是否能够从 cpanel 运行命令。另一件事..上传部分我必须对代码进行一些更改。
    • $uploaddir = '上传'; // 您要将文件上传到的位置 - 重要提示:确保此文件夹权限为 0777! $allowed_ext = 'doc,docx,pdf'; // 这些是上传文件的允许扩展名 $max_size = '1000000'; // 50000 与 50kb 相同 $tempFilename=$_FILES['cv-file']['tmp_name']; $Filename=$_FILES['cv-file']['name']; $Filesize=$_FILES['cv-file']['size']; if(is_uploaded_file($tempFilename)) { if(move_uploaded_file($tempFilename ,$uploaddir.'/'.$newFilename)) {//ok}}
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-23
      • 2014-10-13
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2016-05-23
      相关资源
      最近更新 更多