php加载/显示图像


php loading/displaying a image

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

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

我使用的是iis8,我知道如何使用请求过滤和在url-deny中设置文件夹来禁用访问,只是在我这样做的时候无法加载图像或css文件,除非有更好/更容易的方法使用iis这样做,只有php可以调用文件,但访客无法使用我现有的

非常感谢大家,迈克尔。

您可以在.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']);
}

或者,如果你只是想禁用索引,谷歌充满了有用的信息。

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

order deny,allow
deny from all

然后创建您的图像。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">