index.php:
<style type="text/css">
img {
width: 50px;
}
</style>
<iframe name="myPHPScript" src="header.php" width="50%"
frameborder="0">
</iframe>
<iframe name="myPHPScript" src="header.php" width="50%"
frameborder="0">
</iframe>
<iframe name="myPHPScript" src="header1.php" width="50%"
frameborder="0">
</iframe>
header.php:
<?php header("Content-type: image/png");
$img1 = file_get_contents ("3.png");
echo $img1;
?>
header1.php:
<?php header("Content-type: image/png");
$img2 = file_get_contents ("test1.jpg");
echo $img2;
?>
通过这种方法,我可以调用多个图像,但这不是我期望的,我希望仅使用1个php文件就可以得到相同的结果。
答案 0 :(得分:0)
您可以使用URL参数。
<iframe name="myPHPScript" src="header.php?id=0" width="50%"
frameborder="0">
</iframe>
<iframe name="myPHPScript" src="header.php?id=0" width="50%"
frameborder="0">
</iframe>
<iframe name="myPHPScript" src="header.php?id=1" width="50%"
frameborder="0">
</iframe>
PHP脚本使用$_GET['id']
确定要返回的图像文件。
<?php
header("Content-type: image/png");
$images = ["3.png", "test1.jpg"];
if (isset($images[$_GET['id']])) {
readfile($images[$_GET['id']]);
}
?>
一种替代方法是让PHP返回一个包含所有图像的图像,并使用CSS sprites来显示图像的不同部分。
答案 1 :(得分:0)
没有“把戏”。您不能“防止用户获取图像”。
每个服务器端资源(即图像,HTML页面,样式表,一切)都需要具有可下载的URL。浏览器发出下载URL的请求,接收对该请求的响应,然后将其相应地视为HTML页面,图像或其他内容。
您不能让一个URL返回两个不同的东西。我的意思是,可以,每次访问URL时,服务器可以随机返回不同的内容。但这很荒谬。 如果您希望访问者看到您的图像,则需要给他们提供一个唯一的URL。如果您不希望访问者看到您的图像,图片,请勿将其放在网上。
如果您确实让访问者看到您的图像,则意味着他们需要将其下载到计算机上。他们需要一个URL。您的访问者根本不在乎该URL以KClass<out T>
还是.php
结尾。他们所知道的只是对该URL的请求将返回该图像。您的“技巧”没有任何作用。您仍然以 URL 结尾,可以从中下载图片。
一旦下载了图片并且访问者可以看到它,它就会在他们的计算机上。您不能阻止用户获取图像同时看到图像。你想要的是废话。
(此答案似乎有些杂乱无章,但解决了问题的the original revision。)
答案 2 :(得分:0)
另一种通过一次调用显示多张图像的方法是,而不是返回单张图像,而是返回包含多张图像的HTML。例如,您将调用您的php文件并返回以下内容:
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
将链接处的图像数据作为base64编码数据直接放置在SRC中。
不过,正如其他人指出的那样,它不会阻止某人复制图像。
一个很好的例子,为什么甚至使用ctrl + prtsc。即使我们忽略了诸如浏览器缓存之类的东西,也可以截图。
正如我在评论中提到的,如果有人(例如)未登录,则可以防止PHP文件返回图像。这将防止直接链接回到您的网站。在某些情况下有正当理由,我使用的示例是邮购新娘站点。一些个人资料图片是公开可见的,其他则不是(并非没有帐户)。在这种情况下,这不再是“成人”内容问题,因此有法律责任不向公众展示某些图像或将其直接链接回网站。
但这仍然不会阻止某人复制图像并公开共享。