仅在php中限制登录用户对图像文件的访问
假设用户A在他/她的Facebook帐户中有一些图片,登录后可以查看这些图片 如果用户A注销并尝试其中一个图像的url,则会显示“访问限制”类型的消息 想象一下用PHP构建的社交网站 如何实现这种控制,以便像Facebook一样,在不登录网站的情况下无法查看任何图像?仅在php中限制登录用户对图像文件的访问,php,Php,假设用户A在他/她的Facebook帐户中有一些图片,登录后可以查看这些图片 如果用户A注销并尝试其中一个图像的url,则会显示“访问限制”类型的消息 想象一下用PHP构建的社交网站 如何实现这种控制,以便像Facebook一样,在不登录网站的情况下无法查看任何图像? 将所有图像移动到无法从web访问的文件夹中 实现一个php脚本(image.php),该脚本检查用户是否登录并接受图像名称作为输入(例如image.php?name=flower.png) 如果用户已登录,请发送正确的内容类型im
- 将所有图像移动到无法从web访问的文件夹中
- 实现一个php脚本(image.php),该脚本检查用户是否登录并接受图像名称作为输入(例如image.php?name=flower.png)
- 如果用户已登录,请发送正确的内容类型image
(例如image/png)header()
- 从磁盘读取文件并使用
将其发送给用户readfile()
- 通过发送诸如/images.php?name=/etc/hosts之类的内容,确保人们无法访问images dir之外的文件(最好接受一个图像ID,而不是文件名或文件名的散列,您可以使用
生成散列,但记住根据图像文件的md5散列来命名图像文件,在这种情况下,您总是只在图像目录中查找图像文件)md5()
- 如果用户未登录,您可以发送一个自定义图像,显示“请登录”或终止脚本
src
属性应为:mysite.com/image.php?name=img.jpg,因此脚本image.php将控制对图像文件的访问,并仅在请求用户登录时显示图像文件。如果他/她没有登录,脚本应该终止执行,否则,脚本应该readfile('path/images/img.jpg')
,以便将图像发送给用户(也不要忘记使用header()
设置正确的内容类型。如果url为mysite.com/images/img.jpg,它将尝试读取哪个src属性?答案中的第一个链接()不工作如果您的url直接指定了一个.jpg文件,并且图像文件可以在internet上直接访问,那么就没有简单的方法确保只有经过身份验证的用户才能看到它,这就是为什么所有链接都应该指向php脚本而不是图像本身的原因。该链接是: