仅在php中限制对登录用户的图像文件的访问

时间:2012-04-01 09:21:11

标签: php

假设用户A在Facebook的帐户中有一些图像,他/她可以在登录后查看。

如果用户A注销并尝试其中一个图像的网址,则会显示“访问限制”类型的消息。

想想用PHP构建的社交网站。

如何实现这种控制,以便在没有登录网站的情况下可以查看无图像,就像Facebook一样?

1 个答案:

答案 0 :(得分:12)

  • 将所有图像移动到无法从网络访问的文件夹中。
  • 实现一个php脚本(image.php),用于检查用户是否已登录并接受图像名称作为输入(例如image.php?name = flower.png)。
  • 如果用户已登录,请发送正确的内容类型图片header() http://il2.php.net/manual/en/function.header.php(例如image / png)
  • 从磁盘读取文件,并使用readfile() http://php.net/manual/en/function.readfile.php将其发送给用户。
  • 确保人们无法通过发送/images.php?name=/etc/hosts之类的内容来访问图片目录外的文件(最好接受图片ID而不是文件名,或者如果是文件名的哈希值,您可以使用md5() http://il2.php.net/manual/en/function.md5.php来生成哈希值,但请记住根据md5哈希值命名图像文件,在这种情况下,您始终只在图像中查找图像文件目录)。
  • 如果用户未登录,您可以发送一个自定义图像,上面写着“请登录”或者只是终止脚本。