我创建了一个Web应用程序/站点,人们需要在其中登录并能够访问一些文件才能查看(PDF(。
我的问题是,当我将这些文件存储在服务器上时,在文档文件夹中,人们可以直接访问这些文件而无需登录(如果他们知道随机网址,例如 www.example.com/documentation/example1.pdf(。
我正在使用会话来控制他们是否登录,但是如果他们没有登录或有打开的会话,我如何防止直接访问只是热链接直接链接的人?
如果我通过 filezilla 设置权限,它会限制所有访问,无论它们是否已登录。
任何人都可以就我可以为此采取的解决方案提供建议吗?
谢谢
禁止公共访问文件夹。只需在文件夹中创建一个.htaccess文件并将其放入其中:
Order Allow,Deny
Deny From All
接下来,创建一个脚本来检查用户是否已登录并提供文件。
它看起来像这样:
...
if (userLoggedIn()) {
header('Content-disposition: attachment; filename= ' . $_GET['file']);
header('Content-type: application/pdf');
readfile($path . $_GET['file']);
}
...
在这种情况下,您的用户需要发出类似 www.example.com/download.php?file=example1.pdf 的请求,而不是 www.example.com/documentation/example1.pdf