我有一个包含多个PDF文件的文件夹 每个的名称是创建的会话号 我想要的是用户(未经身份验证的)可以下载与其会话相对应的PDF文件,但无法访问其他文件(因为文件所在的文件夹是公共的)。 我怎样才能解决这个问题? 注意:所有用户都未经过身份验证
答案 0 :(得分:0)
首先,当您说“对应于您的会话”时,您的意思是“参加他们的会话”吗?
首先要做的是阻止目录列表,显然是PDF所在的目录。使用包含此单行的 .htaccess 文件可以轻松完成此操作:
拒绝所有
接下来,假设您正在讨论他们的会话,您可以编写一个简单的HTML链接来下载PDF,例如
Download your PDF <a href="/public/path/to/download.php">here</a>.
其中 download.php 只是服务器端代理服务脚本,例如
<?php
define('PDF_REPOSITORY', '/path/to/dir');
if (session_id() && file_exists(PDF_REPOSITORY . '/' . session_id() . ".pdf")) {
readfile(PDF_REPOSITORY . '/' . session_id() . ".pdf");
}
?>
这里我们利用服务器有权读取资源的事实,尽管客户端不能,因为拒绝上面设置的所有限制。
显然,这种代理服务是一个非常简洁的例子,可以获得更多的保护。