如何使用php阻止文件的公共下载?

Kim*_*cks 10 php authentication authorization download

我有一个脚本,只允许授权用户将文件上传到某个文件夹.

但是我不知道如何防止人们在没有登录的情况下自由下载.

我需要php中的解决方案.

我已经google了一下,但还没有直截了当.

目前在我的文档根目录中,我有一个名为admin的文件夹和一个名为uploads的子文件夹.因此只有管理员角色才能上传.编辑和管理员都可以下载.在这种情况下我该怎么办?

请指教.

dec*_*eze 13

将文件放在公共webroot目录之外的某个位置,或将服务器配置为不提供文件.只要您的服务器很乐意使用有效的URL提供服务,您就无法使用PHP来防止这种情况发生.


如果您的文件位于/public_html/文件夹中,请将它们从该文件夹中取出并放入例如/secret_files/,因此您的目录结构如下所示:

public_html/
    index.html
    admin/
        admin_index.php
secret_files/
    my_secret_file.txt
Run Code Online (Sandbox Code Playgroud)

Web服务器仅配置为提供目录中的/public_html/文件,因此没有人可以访问外部目录(上面的技术术语).

为了让某人能够下载这些文件,请按照cletus的建议,并readfile通过PHP脚本"手动"提供文件.PHP仍然可以访问文件系统的这些其他部分,因此您可以将其用作网守.


cle*_*tus 9

不要将文件存储在文档根目录下的目录中.

而是将它们移动到其他地方,然后PHP脚本可以以编程方式确定是否有人可以下载它们然后使用readfile()或类似的东西将它们流式传输给用户.

您还可以将Web服务器配置为不从此目录提供文件,但无论如何您都需要PHP来提供它们.只是不把它们放在文档根目录下更清洁.


two*_*ate 5

回答有关如何使用PHP进行密码保护的问题: 应该可以解决您的问题.

  • 如果他们找到密码,很可能他们可以访问您的FTP,所以无论如何你都被搞砸了. (4认同)