PHP和文件授权

时间:2013-10-10 16:44:21

标签: php mysql

想看看是否有可能。

我有一个PHP站点,允许用户对站点进行基本登录,并将他们的登录信息存储在MYSQL数据库中。

通过网站的管理区域,我可以上传所有上传到特定文件夹的PDF。例如,我会说位置是“/ pdf / uploads /".

是否可以限制用户可以查看某个文件?

例如,假设我有一个用户名为“jsmith”的用户。他们登录并查看列为“test.pdf”的文件,该文件存储在/ pdf / uploads /目录中。他们可以通过点击链接打开文件。

然后第二个用户“jdoe”登录,他看到为他列出的文件,但没有看到jsmith列出的“test.pdf”文件。如果“jdoe”在网址“http://www.website.com/pdf/uploads/test.pdf”中随机输入,是否有办法不允许他查看/下载该文件?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

是的,这是可能的。您所要做的就是检查当前用户权限,并使用正确的标题检查readfile()

EG。像这样:

$file = 'somefolder/file.pdf';

if (file_exists($file) && userHasPermission($file)) {
    header('Content-Type: application/pdf');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    die;
}

此文件也可以放在公共目录之上。通过这种方式,没有人可以通过其他方式访问它(通过ftp当然)。

答案 1 :(得分:0)

是的,你可以这样做。但是您还必须保存有关数据库中权限的信息。我想你需要更多2张桌子:

  • 文件
  • user_files

因此您可以在files表上注册文件,并将用户与user_files表中的相应文件相关联。