【问题标题】:Include HTML files in a PHP wrapper在 PHP 包装器中包含 HTML 文件
【发布时间】:2015-06-06 02:53:51
【问题描述】:

我不知道如何更好地说明这一点,并尝试搜索一些,但我不确定要搜索什么来适应我的情况。

不幸的是,我管理着一个非常古老的网站,该网站已由至少 5 位网站管理员通过。

整个网站由数百个页面组成,每个页面由一个 .html 文件组成;没有控制器逻辑或任何东西。

现在我需要在整个站点中全局实现几个脚本,我想知道是否有一种快速而肮脏的方法来实现这一点。

我正在考虑通过一种基本的 PHP 控制器封装每个请求,该控制器只需读取请求的文件,在脚本中要求它并使用相同的确切内容和 URL 呈现它,但在结束 @ 之前包含必要的脚本987654321@ 标签。

不幸的是,我在这方面还是个新手,而且我也害怕允许从外部来源进行一些不良注入。实现这样的目标的最佳方法是什么?我在一个 linux apache 服务器上。

【问题讨论】:

    标签: php html model-view-controller routing


    【解决方案1】:

    这里有两种方法:

    1) PHP 包装器

    根据您的要求,您可以使用您的网络服务器将所有传入的 HTML 请求重定向到执行以下操作的 PHP 文件:

    1. 引用 HTML 文件
    2. 打开文件并将其读入字符串
    3. 进行更改
    4. 在响应中输出修改后的内容

    如果您使用像 Apache httpd 这样的服务器,您可以使用 mod_redirect 来处理将请求的 URL 重定向到您的 PHP 文件。

    这种方法效率有点低,因为对于每个请求,都需要读取和修改 HTML 内容。以下编辑文件的方法将获得更高的性能。

    2) 编辑 HTML 文件

    您可以编写一个脚本来遍历所有.html 文件并以编程方式对其进行编辑。

    一种实现方法是打开每个文件并在书本上添加一些行,在底部附近添加一些其他行。您可以在每个文件的顶部为您的 PHP 文件添加 require()

    <? php
        require('path/to/myinclude.php');
    ?>
    

    &lt;/body&gt;标签之前的HTML底部,调用myinclude.php文件中的函数,例如:

    ....
    <?
        my_footer_function();
    ?>
    </body>
    </html>
    

    根据您的网络服务器,您可以让 PHP 解释器为 .html 扩展名执行,这样您就不必更改文件扩展名,如果您愿意的话。

    这样,在此编辑之后,您只需更改myinclude.php 即可修改所有文件中my_footer_function() 中的所有行为。

    【讨论】:

    • 我确实是我想出的第一个方法之一,但由于要编辑的文件量很大而被部分丢弃。在这件事上你有什么建议?我有一个非常基本的主机,简单的 ftp 和 cpanel。
    • 我实际上已经为几个非常大的静态网站做了这个。如果你有一个程序来做,我发现这没什么大不了的。
    • 是的,确实,我可以 .zip 整个站点,下载然后通过我机器上的编辑器 (ST3) 处理所有文件。但在我看来,仍然需要付出很多努力才能完成比这更快、更脏的事情(方式,恐怕更脏)。我上面提到的其他方式是否有机会使用“封装”所有 HTML 请求的 PHP 文件?或者它是一个完全的诺诺?
    • 另外,如果您无法在主机上运行编辑脚本,但在本地拥有文件,您可以简单地在本地编辑并让程序或其他程序以 S/FTP 方式将文件上传到您的主机。
    • 另一种方法是,您可以将所有传入请求重定向到 PHP 文件,该文件以字符串形式读取 HTML 文件,进行适当的编辑并输出内容。这取决于您使用的网络服务器类型。例如,在 Apache httpd 上,您可以使用 mod_redirect
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多