2010-05-09 30 views
2

我有一个带有登录系统的PHP网站,并且试图制作一个只有特定用户名才能查看特定图像的功能。我认为我试图做的事情比仅仅更改.htaccess文件更多地涉及到,因为a)这将无助于辨别不允许用户查看图像,以及b)如果有人进入图片的确切URL("directory/images/photos/230ru0q0238rn230nd_asdi0nqn8.jpg"),它们仍然可以查看图像(因为它是目录中的物理文件,而不是数据库中的文本等)。同样,通过.htaccess进行限制会限制整个目录或其中的所有文件,所以我无法弄清楚它是如何工作的。理想情况下,如果用户的会话/用户名有效,尝试直接通过其直接URL访问它们,所有图像将被阻止,并且图像只会在<img>标签之间出现,否则会收到错误消息。PHP/Apache中的图像显示权限

我听说过术语ACL,但我不确定这与我正在尝试做什么有关。

回答

0

你可以做的是创建一个简单的上下文,输出一个图像作为一个流。这是输出的图像依赖于ID(或一些识别符),例如:

viewImages.php?imageId=234643 

viewImages.php检查用户是否已登录/授权(经由_SESSION $最有可能的),并且如果是这样,它发送图像到浏览器可能使用readfile

1

的授权和访问控制列表方案可以不同,但​​要完成你的问题的基本目标:

  • 把图像PHP可以读取窗台一个非web访问的目录。
  • 使用.htaccess重写所有对脚本的请求(这可能会消除上述步骤,假设它拒绝直接访问文件)。
  • 确认请求用户可以查看请求的图像。
  • 使用readfile()(或各种其他功能)输出图像。