如何阻止直接访问目录中的图像,但允许PHP显示它们?

时间:2013-08-30 03:37:12

标签: php .htaccess

我正在使用带有以下代码的.htaccess文件:

Order deny, allow
Deny from all
Allow from localhost

但是当我显示图像时,我只是在标签中放置了图像的链接,但图像没有显示出来。

如何显示图像但不允许直接访问图像?有没有办法让我只复制文件的原始字节并显示它们?

2 个答案:

答案 0 :(得分:6)

请务必将 embedded.png 保存在与此示例源相同的文件夹中。

<?php
function data_uri($file, $mime) 
{  
  $contents = file_get_contents($file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';base64,' . $base64);
}
?>

<html>
    <h1>Embedded Image:-</h1>
    <img src="<?php echo data_uri('embedded.png','image/png'); ?>" alt="Embedded image" />
</html>

答案 1 :(得分:0)

为图像发送适当的Content-Type标头,然后使用readfile()将字节流式化为输出。

此外,如果您要在URL中使用文件路径,请务必首先清理文件路径,以便例如使用您的脚本无法读取/etc/passwd