2009-07-29 142 views
3

我正在组建一个包含大量图像的投资组合网站,其中一些图像我不想被普通大众查看。我想我会通过电子邮件向某人发送用户名和密码,他们可以通过该用户名和密码“登录”来查看我的工作。限制访问网站上的图像

我已经看到了各种解决方案,包括以下使用php的readfile的“hide-an-image”问题。我也看到另一个使用.htaccess。

Use php's readfile() or redirect to display a image file?

我不是疯了关于ReadFile的解决方案,因为它似乎太慢,无法加载图像,我希望能够使用卡贝尔震荡波的FancyZoom,需要将图像自由访问, (他的图书馆希望链接到完整大小的图像),这样就排除了.htaccess。

回顾一下我想要做的事:

1)提供一个网站,我给用户以自己的身份验证的人,我想看着我的图像的能力。 2)限制随机Web用户无法看到这些图像。 3)使用FancyZoom炸开缩略图。

我不在乎最终使用哪种技术 - Javascript,PHP等 - 什么是最干净和最简单的。

顺便说一句,我是一个Java开发人员,而不是一个Web开发人员,所以我可能没有正确地考虑这个问题。

+0

除非您发送大量图像,否则readfile的性能不会成为问题。对于投资组合网站来说,这完全没问题。 – ceejayoz 2009-07-29 19:15:24

回答

6

而不是提供一个图像的链接。提供一个链接到CGI脚本,它将自动提供图像的正确标题和内容。

例如: image.php sample.jpg

然后,您可以确保它们已经过身份验证(例如通过会话ID)作为链接的一部分?

这将是标题的一部分,然后您的图像数据可以跟随。

header('Content-Type: image/jpeg'); 

编辑:如果它必须快,你可以用C/C++而不是php来编写它。

+0

对,这基本上是读文件解决方案。我没有意识到的是我可以在包含我的图像的a的href中传递image.php?sample.jpg(FancyZoom希望缩略图图像可以通过指向完整大小的图像的链接进行包装,传递image.php? full_size_sample.jpg在href中有诀窍! 谢谢。 – Ken 2009-07-29 19:34:19

3

使用.htaccess应该是最安全/最简单的方法,因为它建立在网络服务器本身的功能上。

+0

我不想使用Auth指令,因为那些弹出对话框。我看着使用以下: [码开始] SetEnvIf之后Referer的 “http://www.mydomain.com/” ALLOW_ACCESS 从所有 拒绝从ENV允许= ALLOW_ACCESS [代码结束] 但是FancyZoom图像请求未能通过SetEnvIf。 – Ken 2009-07-29 19:08:35

0

我不知道它是否适合你的需要,但我用TinyWebGallery,这是一个小画廊应用没有数据库解决了类似的poblem(给图片有限制的一群人)。

您可以通过密码允许访问不同的目录,您可以直接将图片上传到文件系统,因为TinyWebGallery将在飞行中检查新的目录/图片。它会生成缩略图,并为用户提供评分/评论图片的可能性(您可以禁用此功能)。

这不是最小的工具,但是我觉得它比使用apache指令更容易设置,它看起来好像裸照