公共文件仅适用于当前会话

时间:2014-11-27 11:54:05

标签: php joomla permissions

我有一个包含多个PDF文件的文件夹 每个的名称是创建的会话号 我想要的是用户(未经身份验证的)可以下载与其会话相对应的PDF文件,但无法访问其他文件(因为文件所在的文件夹是公共的)。 我怎样才能解决这个问题? 注意:所有用户都未经过身份验证

1 个答案:

答案 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");
}

?>

这里我们利用服务器有权读取资源的事实,尽管客户端不能,因为拒绝上面设置的所有限制。

显然,这种代理服务是一个非常简洁的例子,可以获得更多的保护。