如何防止使用php公开下载文件?

如何防止使用php公开下载文件?,php,authentication,authorization,download,Php,Authentication,Authorization,Download,我有一个脚本,只允许授权用户上传文件到某个文件夹 然而,我不知道如何防止人们在没有登录的情况下自由下载 我需要在php的解决方案 我在谷歌上搜索过,但还没有直接搜索到 目前在我的文档根目录中,我有一个名为admin的文件夹和一个名为uploads的子文件夹。所以只有管理员角色可以上传。编辑器和管理员都可以下载。在这种情况下我该怎么办 请告知。将文件放在公共webroot目录之外的某个位置,或者将服务器配置为不提供文件。只要您的服务器能够愉快地使用有效的URL为所有内容提供服务,您就无法使用PHP

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

然而,我不知道如何防止人们在没有登录的情况下自由下载

我需要在php的解决方案

我在谷歌上搜索过,但还没有直接搜索到

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


请告知。

将文件放在公共webroot目录之外的某个位置,或者将服务器配置为不提供文件。只要您的服务器能够愉快地使用有效的URL为所有内容提供服务,您就无法使用PHP来防止这种情况


如果您的文件位于
/public\u html/
文件夹中,请将其从该文件夹中取出并放入例如
/secret\u files/
,因此您的目录结构如下所示:

public_html/
    index.html
    admin/
        admin_index.php
secret_files/
    my_secret_file.txt
Web服务器仅配置为提供
/public\u html/
目录中的文件,因此没有人可以访问它之外的目录(上面的技术术语)


为了让人们仍然能够下载这些文件,请按照cletus的建议进行操作,并使用PHP脚本“手动提供”这些文件。PHP仍然可以访问文件系统的这些其他部分,因此您可以将其用作守门人。

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

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

相反,将它们移动到其他地方,然后PHP脚本可以通过编程确定是否有人可以下载它们,然后使用或类似的方法将它们流式传输给用户


您还可以将Web服务器配置为不提供来自此目录的文件,但仍然需要PHP来提供这些文件。不把它们放在文档根目录下更干净。

那么,如果有人找到密码呢?如果他们找到了密码,很可能他们可以访问你的FTP,所以你就完蛋了。嗨,克莱特斯,我编程能力不强,所以我需要问你更多细节1)其他地方在哪里?目前在我的文档根目录中,我有一个名为admin的文件夹和一个名为uploads的子文件夹。所以只有管理员角色可以上传。编辑器和管理员都可以下载。在这种情况下,我该怎么办?@keisimone(1)将它们存储在文档根目录上方,可能是类似于htdocs或public_html的内容。@alex是的,我的所有文件都已在public_html:)中,因此它是public_html>admin>uploads@keisimone你能把它们移到docroot上面吗。因此,从公共html访问它们需要这样“../downloads/file.txt”@keisimone Yes或更高版本。默认情况下,您不能访问www.yoursite.com/downloads。