我正在为我的网站创建一个会员区,并且已经在运行了。我使用mysql和php对成员进行身份验证,这真的很有效。
但现在问题发生了,我想为成员提供上传文件到系统的可能性,这些文件应该只对登录的成员可用。
我知道我可以将这些文件存储到数据库甚至文件系统中,并通过php为它们提供服务,但当成员上传更大的文件时,这会对服务器造成很大的负担。这些文件甚至可能是20MB甚至更大。
我想让apache为文件提供服务,但只需要找到一种自动执行http身份验证的方法,这样用户就不需要登录两次。我认为在用户名和密码之后进行http认证是可以的,就像当用户登录到php和mysql认证时,透明的同时javascript等也会做http认证,每个成员都会用相同的凭据进行http认证。当然,我不想将这些http身份验证凭据存储在一个javascript文件中,但是像ajax这样的解决方案也许可以做到这一点。我只是不确定该怎么做。
发布于 2010-06-19 15:58:16
您似乎混淆了身份验证(您提供了某种登录方式)和HTTP身份验证(您专门使用HTTP协议进行身份验证,浏览器向用户显示一个弹出窗口)。
您可能需要前者,这样您就可以设计登录页面的样式。在这种情况下,您将不得不使用PHP或一些脚本语言来检查用户是否已登录。对于某些网站来说,fpassthru或readfile是很好的解决方案;它们速度很快,并且针对这类工作进行了优化。
如果您真的想在web浏览器而不是PHP中处理文件,一种解决方案可以是创建唯一的、短暂的文件名。例如,您可以使用link在PHP中创建指向该文件的硬链接,然后将用户重定向到临时文件名。将硬链接存储在数据库中,并在一段时间后将其删除。
发布于 2010-06-19 15:52:57
查看Using PHP/Apache to restrict access to static files (html, css, img, etc)。我认为那里采取的方法与您的问题非常相似。
https://stackoverflow.com/questions/3074409
复制相似问题