我创建了一个简单的PHP网站,其中包含两个区域 - 公共区域和成员资格。一切都很好。登录工作和网页都受到非成员用户的保护。但是,我似乎无法保护对会员专用图片的直接访问。通过直接输入图片的完整网址,我可以在不登录的情况下完整查看 - 即http://www.mysite.com/members/gregs_funny_cat.jpg。
有没有办法通过脚本禁止这种访问?该网站位于网站上,我无法访问.httpaccess。
答案 0 :(得分:1)
如果您有权访问这样的目录,请将您的图像放在apache目录之外。那可能是父目录或它的子目录...... 编写PHP脚本以从那里打开文件,并在检查用户是否已登录后将其发送到浏览器。
答案 1 :(得分:0)
您可以使用PHP读取图像文件,并仅使用相应的标题将其回显给已登录的用户。
之类的东西if($userLoggedIn)
{
$f = file_get_contents("path/to/jpeg/file.jpg");
header('Content-Type: image/jpeg');
echo $f;
}
如@Lex comment所示,您应该将它们放在webroot文件夹上。
答案 2 :(得分:0)
如果您有文件,我会将文件放在根文件夹之外。然后通过php包装器调用文件,即<img src="files/file.php?id=01341" />
,如果用户有权查看文件,则在file.php中输出带有图像标题的文件。在表中,您拥有与您的01341
令牌对应的真实图像URI,这就是file.php加载并作为图像输出到请求者的内容。这样,服务器文件的真实URi就会隐藏,您可以检查每个图像加载的访问权限。