【问题标题】:How to prevent images from access如何防止图片被访问
【发布时间】:2015-12-04 08:56:49
【问题描述】:

我让用户上传图片到指定文件夹。

现在我想在从源代码访问图像时显示图像,而不是通过 url。所以没有人应该能够通过 url 访问图像,例如 domain.de/images/img1.jpg.... 我该怎么做?

【问题讨论】:

  • 这个问题可能与[link]stackoverflow.com/questions/4286677/…有关
  • @JasonK 编辑了我的帖子,所以更清楚我想要什么。
  • 这听起来像是 Apache(或您使用的任何 Web 服务器)而不是 PHP 的工作。关键是如果引用 URL 不在您的域中,则拒绝访问图像。

标签: php


【解决方案1】:

将图片放在不能通过URL直接访问内容的目录中(此时禁止访问images/

当您必须为其中一个服务时,发送正确的图像类型标头,从磁盘读取图像并将其发送到客户端

header( 'Content-Type: image/jpeg' );
readfile( $pathToTheImage );

【讨论】:

  • 我必须将您提供的源代码放在哪里?以及如何防止文件夹访问?只是把它高一级,然后是其他文件? @Paolo
  • 理想情况下,您应该有一个带有 GET 或 POST 参数的 URL 用于显示图像。前任。 showImage.php?imgId=12345。该脚本将验证请求,如果可以,则提供图像。 -- 要防止访问图像文件夹,您可以将其置于 Web 服务器根文件夹之上,或在 Web 服务器配置文件(Apache 的.htaccess)中明确拒绝访问
  • 好的,我该如何提供服务?我如何告诉 showImage.php 文件,它应该将图像发送到哪里,以及如何在文件中访问图像,它是通过标题发送到哪里的?
  • readfile() 读取指定为参数的路径(示例中为变量$pathToTheImage 的内容)处的文件并将其发送给客户端。见php.net/manual/en/function.readfile.php
  • 好的,但是当你说它被发送到客户端,然后他们下载它,对吗? (就像在 php.net 示例中一样).. 但我想在它发送到的页面上显示它..
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 2016-07-15
  • 2012-05-22
  • 2023-02-16
  • 2012-10-07
  • 2011-04-28
  • 2018-10-21
  • 2014-01-16
相关资源
最近更新 更多