防止图像直接访问

时间:2017-02-19 08:26:31

标签: php html image

有什么方法可以设置一个只供会员访问的图库? 我可以设置php登录和所有。 但我想要安全地处理图像。拥有图片网址的任何人都应该无法以成员身份登录之前访问该图片。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

将图像放在公众无法访问的位置。

使用代码代码:

<img src="/imageproxy.php?image=<?=$imagename?>" />

imageproxy.php 文件:

$image = filter_input(INPUT_GET,"image");

$imageWithPath = "/path/to/images/".$image
if (/* is authenticated */ && is_readable($imageWithPath) && /* user can access $image*/) {
    header("Content-Type: ".mime_content_type($imageWithPath));
    $handle = fopen($imageWithPath,"r");
    fpassthru($handle);
    fclose($handle);
    exit; 
} else {
   http_response_code(403);
   exit;  
}

这是使用base64图像的替代方法,因为这样您可以异步加载图像而不是预先加载它们。

答案 1 :(得分:0)

为防止图像直接访问,您可以设置会话并在设置会话时显示内容

<?php
session_start();
if(isset($_SESSION['username']) && !empty($_SESSION['username']))
        {
             echo "<img src='imgname.png' />";
        }
?>