php加载/显示图像

php加载/显示图像,php,image,iis,Php,Image,Iis,我希望有人能帮助我,我想加载/显示一个页面上使用php的图像。 但我想禁用已从web访问的图像文件夹 例如,如果我转到/image.php/test.jpg 我希望它从图像文件夹中获取图像,并使用image.php文件在屏幕上显示,但我不希望它像这样可见(我不需要链接代码或任何帮助,只需要所需的代码而不是html img标记) 目前,我正在将img tage放入一个变量中,然后将其从函数中返回,但我认为这不起作用。当我关闭图像文件夹时,这将起作用 我正在使用iis8,我知道如何使用请求过滤禁用访

我希望有人能帮助我,我想加载/显示一个页面上使用php的图像。 但我想禁用已从web访问的图像文件夹

例如,如果我转到/image.php/test.jpg 我希望它从图像文件夹中获取图像,并使用image.php文件在屏幕上显示,但我不希望它像这样可见(我不需要链接代码或任何帮助,只需要所需的代码而不是html img标记) 目前,我正在将img tage放入一个变量中,然后将其从函数中返回,但我认为这不起作用。当我关闭图像文件夹时,这将起作用

我正在使用iis8,我知道如何使用请求过滤禁用访问,并在url deny中设置文件夹,只是在我这样做时无法加载图像或css文件,除非有更好/更简单的方法使用iis,这样只有php可以调用文件,但来宾不能使用我现有的
非常感谢大家,迈克尔

在图像文件夹中添加一个包含以下内容的.htaccess文件(AllowOverride必须设置为true):

order deny,allow
deny from all
然后创建image.php

$img = $_GET['img'];

$file = 'images' . DIRECTORY_SEPARATOR . $img;
header('Content-Type: image/jpeg');

readfile($file);
您的html应该如下所示:

<img src="image.php?img=rick-rolled.jpg">

您可以在
.htaccess
文件中使用类似的内容(假设您的图像位于
/images
中):

然后在images文件夹中创建一个
index.php
,并将逻辑放在其中以提供图像服务

<?php
if($_SERVER['HTTP_REFERER'] === "mywebsite.com"){
header("Content-type: image/jpeg");
readfile($_GET['p']);
}

您是在页面上显示其他内容还是仅显示一个图像?因此image.php完全负责输出图像数据?然后使用文件的url作为src属性:
至于如何锁定images文件夹,最简单的方法是将其放置在WebRoot之外,请参阅本文,你可以知道如何保护你被访问的图像。可能的重复给被否决的投票人:解释你的否决票是礼貌的,这样每个人都会学到一些东西。我没有否决票,马克是对的。然而,我认为否决票是因为
$img=$\u GET['img']
应该是
$img=$\u GET['file']
因为使用
image.php?文件调用它
$img=$\u GET['img']
image.php?img
如果你不担心热链接,只想禁用索引,就没有必要让php参与进来。@Adelphia你知道,我也可以很容易地用你犯的错误否决你的答案,但我没有。我对
.pdf
发表了评论。你也可以这么做,说点什么。这里有一个教训(眨眼)我们来这里是为了互相帮助,而不是竞争。弗雷德,蒙塔内卢,很抱歉在解释我的反对票时耽搁了。这只是因为我注意到弗雷德对我答案的评论,并想先纠正我自己的错误。我已经删除了我的否决票。
(.+?\.pdf)
那不应该是jpg文件吗?
<?php
if($_SERVER['HTTP_REFERER'] === "mywebsite.com"){
header("Content-type: image/jpeg");
readfile($_GET['p']);
}