在PHP中从私人文件夹渲染HTML页面

时间:2012-02-20 20:16:22

标签: php html

我有一个网站,其HTML页面存储在私人文件夹中。我想要一个可以读取HTML文件然后将其推送到浏览器的PHP脚本。

我的想法是在PHP中使用file()函数获取html文件。然后echo()它到浏览器。这适用于页面的html内容。然而,图像和CSS并未遵循。

我听说过IIS或ASP中的“渲染”功能,它将网页的HTML内容呈现在私人文件夹中,然后以二进制格式发送图像。 PHP有类似的东西吗?

目前我阅读的文件如下:

$htmlFile = file(PATHTOFILE);
echo(implode('',$htmlFile));

我们尝试这样做的原因是为了保护此文件夹中包含的网页的网址/信息。用户必须连接到Web服务,然后PHP脚本将推送html页面

3 个答案:

答案 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;