-1

我创建了一个简单的 PHP 网站,其中包含两个区域 - 一个公共区域和一个会员区域。一切都很好。登录工作和网页都受到非会员用户的保护。但是,我似乎无法保护会员专用图片的直接访问权限。通过直接输入图片的完整 URL,我可以在不登录的情况下完整查看它 - 即http://www.mysite.com/members/gregs_funny_cat.jpg

有没有办法通过脚本来禁止这种访问?该网站位于 webhotel 上,我无法访问 .httpaccess。

4

3 回答 3

1

如果您有权访问这样的目录,请将您的图像放在 apache 目录之外。那可能是它的父目录或子目录......编写一个PHP脚本从那里打开文件,并在检查用户是否登录后将它们发送到浏览器。

于 2012-09-05T14:33:07.667 回答
0

您可以使用 PHP 读取图像文件,并仅将其回显给具有适当标题的登录用户。就像是

if($userLoggedIn)
{ 
    $f = file_get_contents("path/to/jpeg/file.jpg");

    header('Content-Type: image/jpeg');
    echo $f;
}

正如@Lex 评论所建议的那样,您应该将它们放在 webroot 文件夹之上。

于 2012-09-05T14:32:20.083 回答
0

如果您有文件,我会将文件放在根文件夹之外。然后通过 php 包装器调用文件,即<img src="files/file.php?id=01341" />如果用户有权查看文件,则在 file.php 中输出带有图像标题的文件。在表中,您拥有与您的01341令牌相对应的真实图像 URI,这就是 file.php 加载并作为图像输出给请求者的内容。这样,您的服务器文件的真实 URi 将保持隐藏状态,您可以检查每个图像加载的访问权限。

于 2012-09-05T14:42:56.337 回答