限制直接网址下载的图像

时间:2011-03-30 13:40:18

标签: php

前一段时间我问了这个问题并得到了一个我认为可行的答案,但我仍然有问题。也许这是我做错了但我仍然没有这个。

我想限制对整个目录的访问。该目录中包含图像和pdf文件。我需要创建一个指向pdf文档的链接,并嵌入一个锚标记,即图像。有人告诉我使用标题。使用标题立即输出适用于pdf文档的内容,但我必须嵌入来自同一目录的3个图像,这不起作用,因为标题在html之前输出图像,这是正确的行为。

我需要一种方法将图像分配给变量,这样我就可以在输出html后将其嵌入到我需要的位置。有什么想法吗?

这是我上一个问题的链接。 How to restrict viewing files within a directory

1 个答案:

答案 0 :(得分:0)

将图片移至主机的公共文档根目录之外,或使用.htaccess限制对其进行访问,例如

<FilesMatch "\.(gif|png|jpe?g)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

使用PHP脚本发送图像,这将检查用户会话并仅在用户登录时发送图像。

//... your session checking routine just like in other scripts
if (!$logged) {
    //show error
    exit();
}

//Simple extention-to-mimetype map:
$mimetypes = array(
    '.jpg' => 'image/jpeg'
    '.jpeg'=> 'image/jpeg'
    '.pdf' => 'application/pdf'
    //add other extensions if needed
);

$file = basename($_GET['file']);    //preventing tricks with ../../anypath/anyfile
$ext = substr($file, strrpos($file, '.'));
if (file_exists($images_dir . $file) && isset($mimetypes[$ext]) ) {
    header('Content-Type: ' . $mimetypes[$ext]);
    echo file_get_contents($images_dir . $file);
} else {
    //show error
}