Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示图像而不显示其文件路径_Php - Fatal编程技术网

Php 显示图像而不显示其文件路径

Php 显示图像而不显示其文件路径,php,Php,有没有办法显示没有路径的图像。我的意思是不使用HTML标记,我想使用PHP来显示图像。因为如果我使用HTML,有人可以保存或共享该图像 编辑:很抱歉我的问题不清楚。我不是说阻止保存图像。我的意思是不在URI或HTML上显示文件路径“/path/to/image.jpg”。因为我不希望用户在我的网站上复制和共享包含该图像的链接。共享该图像的唯一方法是“将图像另存为”并共享它。无论如何,谢谢大家 这是我的解决方案: <?php $image = 'new.png'; $content = f

有没有办法显示没有路径的图像。我的意思是不使用HTML标记,我想使用PHP来显示图像。因为如果我使用HTML,有人可以保存或共享该图像

编辑:很抱歉我的问题不清楚。我不是说阻止保存图像。我的意思是不在URI或HTML上显示文件路径“/path/to/image.jpg”。因为我不希望用户在我的网站上复制和共享包含该图像的链接。共享该图像的唯一方法是“将图像另存为”并共享它。无论如何,谢谢大家

这是我的解决方案:

<?php
$image = 'new.png'; 
$content = file_get_contents($image); 
header('Content-Type: image/jpeg');
echo $content; exit();
<?php
$image = 'new.png'; 
$content = file_get_contents($image); 
header('Content-Type: image/jpeg');
echo $content; exit();

即使使用PHP输出图像,也需要使用HTML。无法阻止用户保存图像

您可以尝试将图像用作CSS的
背景图像
,这将阻止非高级用户保存图像,但是任何知道如何检查DOM或读取CSS的人都不会在保存图像时遇到任何问题


考虑这一点-当用户在页面上看到图像时,他们的浏览器已经将该文件下载到用户的硬盘上。

正如dtbarne所解释的,任何高级用户都可以获得该图像。然而,人们做了一些事情来防止这种形式的普通用户

  • 禁用右键单击
  • 在没有工具栏的弹出窗口中显示
  • 使用CSS设置图像以隐藏路径,就像我们在
  • 使用javascript加载图像
  • 使用PHP生成动态图像。在生成图像之前,需要检查身份验证和时间戳
    也许还有其他的方法。仅供您考虑。

    如果浏览器可以查看,用户可以保存它。这条规则是绕不开的


    唯一的例外是,如果使用图像中每个像素颜色的1x1 pixel
    div
    s重新创建图像,这是一种非常繁重的操作,只有在图像非常小的情况下才可以使用。以某种方式呈现页面中的任何内容都需要HTML。这也意味着它在代码中的某个地方是可见的——有些直接可见,有些需要调试工具来拦截

    你可以通过以下方式让人们不可能窃取图像(有些不太理想,但可以做到)

  • 使用flash/silverlight作为框架-虽然不理想,但它确实可以帮助您防止那些右键单击并保存的人。您也无法查看闪存源

  • 使用背景图像-调整div的大小,使其适合图像(因为div依赖于显式标注或子标注来拉伸它)。url可以在CSS上查看(除非它是动态放置的)

  • 使用具有“屏蔽”的图像-为此,创建一个容器div并将图像放置在其中。在同一容器中,有一个覆盖图像的div(绝对位置,z高z索引)。这将阻止“右键单击保存”方法。但是图像路径在源中(除非它也是动态放置的)

  • 您可能会想到canvas,但canvas就像一个位图(因此仍然是一幅图片),因此仍然是一个禁忌


    所有这些都不是傻瓜式的方法。唯一可以避免人们盗取自己的图像的方法是实际使用水印。他们可以保存但不能拥有它,因为它上面会有一个水印(比如你的名字)。

    如果客户端可以看到你的图像,用户无论如何都可以保存它

    这是我的解决方案:

    <?php
    $image = 'new.png'; 
    $content = file_get_contents($image); 
    header('Content-Type: image/jpeg');
    echo $content; exit();
    
    <?php
    $image = 'new.png'; 
    $content = file_get_contents($image); 
    header('Content-Type: image/jpeg');
    echo $content; exit();
    

    您可以在
    
    
    这个怎么样?是的,但是用户仍然可以从访问它的PHP文件下载它。我使用/controller/action并检查member。他们无法共享链接。他们只能执行“将图像另存为”并共享图像。这种方式工作正常吗?我也需要这个东西!