禁止无效用户使用php访问根目录下的文件


Deny access to files in root directory from invalid users with php

我有一个php网站。要访问某些页面,用户必须登录。我包括一个脚本重定向到登录页面,如果没有验证。用户必须寻找专门为他们制作的图像,其他用户不应该看到这些图像。为了显示这些图像,我使用img标签,它们需要在根目录中,据我所知。有什么方法可以保护这些文件不被无效用户使用吗?

而不是链接到像<img src='1.jpg'/>这样的图像链接到一个php,它检查用户是否登录并返回图像<img src='getimage.php?imageId=1'/>的字节…然后把它们放到PHP页面以外不能直接使用的地方。

//check if user is logged in
if(!loggedIn())
{
   echo 'not logged in';
   exit();
}
$id = $_GET['imageId'];
$file = ... //use that id to look in db for image path
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);