限制登录用户只能在php中访问图像文件


restrict access to image files for logged in users only in php

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

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

想象一下用PHP构建的社交网站。

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

  • 将所有图像移动到无法从web访问的文件夹中
  • 实现一个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之类的内容访问images-dir之外的文件?name=/etc/hosts(最好接受映像ID,而不是文件名或文件名的哈希,您可以使用md5()http://il2.php.net/manual/en/function.md5.php要生成散列,但请记住根据它们的md5散列来命名图像文件,在这种情况下,您总是只在images目录中查找图像文件)
  • 如果用户没有登录,您可以发送一个自定义图像,上面写着"请登录"或终止脚本