假设用户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目录中查找图像文件) - 如果用户没有登录,您可以发送一个自定义图像,上面写着"请登录"或终止脚本