繁体   English   中英

使用PHP显示HTML页面中的图像,而无需调用PHP脚本或使用PHP echo来隐藏图像路径

[英]display image from HTML page using PHP without calling PHP script or using PHP echo to hide image path

我想在HTML网页中显示文件中的图像,使用PHP隐藏文件的位置,使用PHP标头/ readfile,并避免使用任何会泄露文件位置的PHP(例如echo)。

到目前为止,我只能通过从HTML调用PHP scrpit来使此工作正常进行,但是宁愿不调用脚本也可以这样做,因此查看者看不到PHP脚本文件。 我不想使用PHP文件而不是HTML文件(因此查看器无法自己输入PHP脚本的URL)。

image.php:

<?php
header('Content-Type:image/jpeg'); 
readfile('../image.jpg');
?>

image.html:

<html>
...
<img src="image.php"/>

在HTML文件中,我想做等效但内联的操作:

<html>
...
<img src="<?php header('Content-Type:image/jpeg');readfile('../image.jpg');?>"/>

要么:

<html>
...
<?php
echo '<img src="';
header('Content-Type:image/jpeg'); 
readfile('../image.jpg');
echo '"/>';
?>

我怀疑我对HTML和PHP如何协同工作缺乏了解使我失望了。

我想做等效但内联的:

你不能。 您必须有单独的请求。 您可以选择将图像内联为base64,但无论如何都是一个坏主意。

同样,这段代码看起来毫无意义-您只要暴露现有文件而没有这样做的任何好处,但是却要杀死所有浏览器可以完成的缓存和其他功能。 除非您知道如何正确执行此操作(这不是那么简单),否则您将使简单的事情变得复杂而不是简化复杂的事情。

尝试时无法完成您想要的。 您可以通过base64方法来回显内容。 但这会使您的html尺寸迅速增加,这对性能不利。

有一种方法可以使它正常工作。 这有点棘手,但是您可以为此使用.htaccess文件。 通常,您经常使用它来重写一些URL,以将URL重定向到index.php 您还可以使用它来创建图像网址:

RewriteEngine On
RewriteRule ^/special-images/(.*)\.jpg$ /php-file-directory/image.php?image-name=$1 [L]

如果现在执行<img src="/special-images/bob.jpg" /> ,它将在内部open-image.php $_GET['image-name'] open-image.php $_GET['image-name'] bob open-image.php

*现在无法测试htaccess,但是您可以掌握它的要旨。

尝试将其覆盖到数据URL

https://stackoverflow.com/a/13758760/11485791

例:

<img src="<?
php path = '../image.jpg';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
echo $base64;
?>"/>

但是返回的html将会很大

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM