我的服务器上的图像在受密码保护的目录中

时间:2011-02-04 10:36:03

标签: apache .htaccess

我在受密码保护的目录中有图像,但我想在正常的未受保护的网站上显示这些图像。

当我尝试并用简单的方式显示它们时:

<img src ='PASSWORD PROTECTED DIR/Image.jpg">

要求我输入用户名和密码。

但是,当我实际导航到受密码保护的目录中的内容时,我只想输入用户名和密码。

我正在使用PHP。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

假设您使用的是Apache。

您可以在.htaccess文件中排除一些定义密码保护的文件。

未经测试,但这应该有效:

<Files "path/to/image.jpg"> 
  Allow from all
  Satisfy any
</Files>

但更可取的选择是简单地将图像放在受保护目录之外。

答案 1 :(得分:0)

没有很多棘手的代码,这基本上是无法解决的。 <img>命令表示您的用户将要求提供该信息,这与直接请求信息没有什么不同。

您可以启动并检查请求是如何制作的,过滤,通过php文件加载所有图像等,但使用基本工具是不可能的。

直接或通过<img>标记请求图片是相同的。

答案 2 :(得分:0)

因为它是PHP,你可以在一个单独的文件中这样做(imgHandler.php)

<?php
// Allowed files
$allowedfiles["image1"] = "./the_dir/Image.jpg";
$allowedfiles["image2"] = "./the_dir/Image2.jpg";

function getImage($path) {

    echo file_get_contents($allowedfiles[$path]);
}
getImage($_REQUEST['img']);
?>

然后对于要显示的图像,只需使用:

<img src="imgHandler.php?img=image1" />

这不会阻止缓存,并且比我之前提出的其他解决方案更安全。