我有一个网站,其HTML页面存储在私人文件夹中。我想要一个可以读取HTML文件然后将其推送到浏览器的PHP脚本。
我的想法是在PHP中使用file()
函数获取html文件。然后echo()
它到浏览器。这适用于页面的html内容。然而,图像和CSS并未遵循。
我听说过IIS或ASP中的“渲染”功能,它将网页的HTML内容呈现在私人文件夹中,然后以二进制格式发送图像。 PHP有类似的东西吗?
目前我阅读的文件如下:
$htmlFile = file(PATHTOFILE);
echo(implode('',$htmlFile));
我们尝试这样做的原因是为了保护此文件夹中包含的网页的网址/信息。用户必须连接到Web服务,然后PHP脚本将推送html页面
答案 0 :(得分:4)
您可以使用标记base
来解决文件相对路径的问题,如下所示:
$html = file_get_contents($url);
$html = str_replace('<head>', '<head><base href="FULL PATH OF DIR" />', $html);
echo $html;
答案 1 :(得分:0)
不显示CSS和图像,因为HTML文件中的路径与HTML文件相关,对吧?如果你在同一个私人文件夹中有这些CSS和图像,你怎么能希望用户获取它们?
间接,您应该像使用HTML一样获取CSS和图像。但这意味着您必须替换显示的HTML中的所有路径,这是非常荒谬的。事实上,我们现在正在谈论某种代理......?!?!?
为什么需要它?
无论如何echo(file_get_contents($htmlFile));
压力较小。
答案 2 :(得分:0)
另一个选项如果是<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;