我希望有人能帮助我,我想使用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">