让Apache使用PHP控制对文件/目录的访问
我正在做一个网站,人们可以上传文件。文件可以是公共访问,也可以是私有访问。为了避免编码问题,我将带有随机名称的文件存储在“隐藏”目录中。 但是,如果我们知道url,就可以直接访问公用文件夹。(这不是问题) 我的公共部分还可以,我的php脚本给用户一个如下所示的url:让Apache使用PHP控制对文件/目录的访问,php,apache,authentication,Php,Apache,Authentication,我正在做一个网站,人们可以上传文件。文件可以是公共访问,也可以是私有访问。为了避免编码问题,我将带有随机名称的文件存储在“隐藏”目录中。 但是,如果我们知道url,就可以直接访问公用文件夹。(这不是问题) 我的公共部分还可以,我的php脚本给用户一个如下所示的url: 和apache通过以下方式控制访问: RewriteRule ^d/(\d+)/([a-zA-Z0-9]+)/(.+)$ ./files/public/$1/$2 [L] 到目前为止,一切都很好 但现在,棘手的部分是私人文件
和apache通过以下方式控制访问:
RewriteRule ^d/(\d+)/([a-zA-Z0-9]+)/(.+)$ ./files/public/$1/$2 [L]
到目前为止,一切都很好
但现在,棘手的部分是私人文件。我需要只有上传文件的用户才能访问该文件。我想避免使用基于PHP的解决方案,使用一些readfile或file\u get\u contents
之类的东西
事实上,我会想象这样的情况:
用户尝试访问/files/private//
和Apache“询问”PHP文件是否正常
问题是,我认为这是不可能的
所以:谢谢:)mod_rewrite中有
RewriteMap
,它可以使用外部数据源提供一些重写规则/映射。然而,性能可能相当糟糕
检查:mod_rewrite中有
RewriteMap
,可以使用外部数据源提供一些重写规则/映射。然而,性能可能相当糟糕
检查:您可以使用fread()
并将1kb的块与垃圾收集器()一起读取/发送到浏览器,这在内存中应该不会有任何问题
使用fread()
只保存文件中的一个位置和文件的一段
这将只比Apache小一点点,但您拥有完全的访问控制,这是值得所有情况下使用的
其他网站将大数据以块的形式保存到数据库中,您甚至不会注意到。您可以使用fread()
并结合垃圾收集器()将1kb的块读取/发送到浏览器中,这在内存中应该一点问题也没有
使用fread()
只保存文件中的一个位置和文件的一段
这将只比Apache小一点点,但您拥有完全的访问控制,这是值得所有情况下使用的
其他网站将大数据以blob形式保存到数据库中,你甚至不会注意到。如果允许用户访问文件,我认为你不能让Apache“询问”php。你如何验证你的用户?你说要避免的php是你应该采取的方法。为什么要避免它?@EtienMiret:“基本”PHP身份验证。登录表单查看DB@Dagon:因为它很慢而且很重。如果允许用户访问文件,我认为你不能让Apache“询问”php。你如何验证你的用户?你说你想要避免的php是你应该采取的方法。为什么要避免它?@EtienMiret:“基本”PHP身份验证。登录表单查看DB@Dagon:因为它又慢又重。