仅按会话下载

时间:2015-06-02 00:58:28

标签: php file-management

假设我想在我的服务器上的某个目录下托管一些pdf个文件(例如domain/myfiles)。出于这个原因,我创建了一个独特的 - 难以猜测的链接,使用一些常见的PHP函数,然后将文件放在这个特定目录(domain/myfiles/hardToGuessHash.pdf)中。

但是,如果有人通过domain/myfiles/hardToGuessHash.pdf访问我的服务器,他将能够查看并下载此文件。

有没有办法提前要求session access,以阻止对我的文件进行未经授权的访问?我在StackOverflow上搜索但我真的没想出来。

澄清:我不想隐藏下载链接。我想要下载验证。例如,如果在文件副本上具有下载权限的人A粘贴在人B上的下载链接,那么人B就不能从该链接下载该文件!

谢谢!

1 个答案:

答案 0 :(得分:3)

所以将文件存储在文档根目录之外 - 然后没有人可以直接访问。

通过检查会话的php页面切断所有文件:

<?php
session_start();
if (isset($_SESSION['logged_in'])) { //or what ever session check you like
  $file = '/this/is/the/path/file.mp3';

  header('Content-type: audio/mpeg');
  header('Content-length: ' . filesize($file));
  readfile($file);
}else{
echo 'you cant have the file';
}
?>

我承认偷了大部分Allow logged in user to Download File in PHP else nobody can't