我有一个功能齐全的登录系统,我让用户通过会话变量$_Session['user_ID']中的ID登录。
我想使用该ID授权他们查看某些文件。
我知道我可以使用MySQL数据库来存储他们是否有权查看某个文件,然后在通过网页(例如页面上有容器的file.php)访问数据库时,对照数据库检查他们的ID。但是,我如何阻止某人发现文件的URL(例如/files/file.pdf),并在浏览器中导航到该URL并以这种方式查看?
我知道必须有办法,但我的知识显然是有限的。
如有任何帮助,我们将不胜感激。
谢谢
Connor Wyatt
根据OP的请求
将文件放置在公共html区域之外。
$file = "/var/user/you/outside_folder/file.xxx";
类型的东西。
"如果用户获得授权,您可以使用脚本中的readfile"
Bansi建议使用readfile
是一个很好的方法。
根据该页面上的示例:
$filename = "file.csv";
$filepath = "/path/to/file/" . $filename;
来自示例#1
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
其中$file = 'monkey.gif';
可以修改为:
$file = '/var/user/you/outside_folder/monkey.gif';