我有一个网站,它的HTML页面存储在一个私人文件夹中。我想要一个PHP脚本,它可以读取HTML文件,然后将其推送到浏览器。
我的任务是用PHP中的file()
函数获取html文件。然后echo()
将其发送到浏览器。这适用于页面的html内容。然而,图像和css并没有跟随。
我听说IIS或ASP中有一个"呈现"功能,它可以在私人文件夹中呈现网页的HTML内容,然后以二进制格式发送图像PHP有类似的东西吗
目前我阅读的文件如下:
$htmlFile = file(PATHTOFILE);
echo(implode('',$htmlFile));
我们尝试这样做的原因是为了保护此文件夹中包含的页面的url/信息。用户必须连接到web服务,然后PHP脚本将推送html页面
您可以使用标记base
来解决文件的相对路径问题,如下所示:
$html = file_get_contents($url);
$html = str_replace('<head>', '<head><base href="FULL PATH OF DIR" />', $html);
echo $html;
CSS和图像不会显示,因为它们在HTML文件中的路径是相对于HTML文件的,对吧?如果你在同一个私人文件夹中有这些CSS和图像,你怎么能希望用户能获取它们呢?
间接地,您应该像获取HTML一样获取CSS和图像。但这意味着您必须替换显示的HTML中的所有路径,这是非常荒谬的。事实上,我们现在正在讨论某种代理?!?!?
你为什么需要它?
无论如何,echo(file_get_contents($htmlFile));
压力较小。
另一个选项,如果它是<img />
标签,并且图像也存储在根目录之外,则可以将src=
属性设置为:
src="get_image.php?file=thisfile.png" // add a $_GET if needed to distinguish files
然后get_image.php:
$file = $_GET['file'];
// security checks if you wish
header(sprintf("Content-type: %s;",'image/png'));
readfile($file);
exit;