php加载/显示图像

时间:2014-11-03 14:45:48

标签: php image iis

我希望有人可以帮助我,我想使用php在页面上加载/显示图像。 但我希望禁用从网络访问的图像文件夹。

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

我正在使用iis8,我知道如何使用请求过滤禁用访问权限并在url deny中设置文件夹,只是在我这样做时无法加载图像或css文件,除非有更好/更简单的方法它使用iis所以只有PHP可以调用文件,但客人不能使用我现有的

非常感谢所有人,迈克尔。

2 个答案:

答案 0 :(得分:1)

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

RewriteEngine On
RewriteBase /images/
RewriteRule ^(.+?\.jpg)$ index.php?p=$1 [L,QSA,NC]

然后在images文件夹中创建一个index.php并将逻辑放在那里以提供图像。

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

或者,如果您只想禁用索引,Google is full of helpful info

答案 1 :(得分:0)

使用以下内容在images文件夹中添加.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">