阻止直接访问图像,但允许灯箱(fancybox 2)


prevent direct access to images, but allow lightbox (fancybox 2)

有几个建议,但我不知道我应该使用哪一个,或者什么对我来说最好。其中一个听起来像是你实际上会将每个图像编码为字符串,然后显示出来。另一个听起来像是设置用户/登录,然后通过用户ID指定图像的位置,但我想避免这样复杂的事情。

基本上,我所有的照片都被组织到子文件夹中,在一个名为"照片"的主文件夹中。我使用我编写的PHP脚本扫描这个目录,并从子目录创建所有库(请参阅我的文章)。

但问题是,如果你查看来源,你会看到我所有照片的直接链接。有没有一种方法可以禁用对所有照片的访问,但仍然允许我的php脚本和fancybox访问它们?我对服务器端的东西不太了解,但我正在学习。

感谢您的推荐。

将图像编码为字符串是最安全的选项,因为只有脚本才能访问图像,您可以将它们放在web根目录之外。编码本身并不那么困难:

$path = 'path/to/image.jpg';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
echo '<img src="' . $base64 . '" />';