【问题标题】:Using PHP in a .html document在 .html 文档中使用 PHP
【发布时间】:2013-01-21 01:43:23
【问题描述】:

我正在从事一项需要创建网络论坛的工作。由于我的愚蠢,我决定使用 javascript,事先不知道 javascript 是一种客户端语言。我需要一种方法将数据从 javascript 保存到服务器上,然后能够读取数据。我尝试查看 node.js 之类的东西,但是为了做到这一点,我将重新配置整个 Web 服务器(这不是我的)。另一种解决方案是使用 php。这就是问题所在:在设置网页布局的 html 文件中使用了一堆包含(即 css 文件、html 文件,甚至是 php 包含)。我无法将索引文件的名称更改为 index.php,因为它破坏了文件内的所有包含。所以我需要一种方法来保存,比如说一个文本文件,使用 javascript 和 html。如果有办法,我想做一些非常简单的事情,比如在 html 中包含一个 php 文件,然后在我的 javascript 代码中调用一个 php 函数来将文件的内容放入我的 index.html 页面。我认为有一种方法可以像这样调用一个简单的命令:

<script>
    var thedata = <?php getData() ?>
</script>

php 函数 getData() 将返回一个包含所有数据的 json 编码字符串(从单独的 php 文件处理)。有没有办法做到这一点?关于如何在不将我的 index.html 文件更改为 index.php 的情况下处理服务器上的数据存储的任何其他建议?

注意:我尝试访问 apache httpd.conf 文件并添加一个处理程序以将 .html 文件预处理为 php 文件,但这似乎不起作用(没有像 echo 'test' 这样简单的东西适用于 html文件)。

【问题讨论】:

  • 您应该能够添加 .html 作为 PHP 处理的文件扩展名。但是,有可能文件 .html 的更远位置已经被分配给 text/html。我会先检查 .html 是否出现在您的 httpd.conf 文件中的其他任何地方。
  • 题外话:一定要echo使用json_encode()输出getData()的结果,像这样var thedata = &lt;?php echo json_encode(getData()) ?&gt;;你不用加引号,他们将由 json_encode() 添加
  • 使用 Ajax 将服务器作为 Web 服务进行查询可能会更好? (然后你添加相应地编写你的服务器,如果你愿意的话,用 PHP)

标签: php html node.js


【解决方案1】:

文件扩展名必须是.php,以便服务器知道解析文件。

【讨论】:

  • 不一定...服务器可以配置为将任何文件作为 PHP 处理。有关详细信息,请参阅 Waleed Khan 的回答。
  • 请告诉我们答案,让我们都变得更聪明。
【解决方案2】:

将此添加到您的.htaccess

AddHandler application/x-httpd-php5 .html .htm

source

它使 Apache 将 HTML 文件视为包含 PHP 的文件。不过请注意不要在常规 HTML 文件中意外使用 PHP 语法。

请记住,您仍然需要使用 PHP 标签才能进入 PHP 模式。这按预期工作:

<p>html content ...  <?php echo 'hello, world'; ?></p>

但这会输出回显命令:

<p>echo 'hello, world'</p>

【讨论】:

    【解决方案3】:

    如果可以让您的网络服务器通过 mod_php 处理您的页面。 如果您使用的是 apache,只需将其添加到您的 .htaccess

    AddHandler x-httpd-php .html .htm 
    AddHandler php-script .php .html .htm
    AddHandler php5-script .php .html .htm
    AddType application/x-httpd-php .htm 
    AddType application/x-httpd-php .html
    

    我希望您了解这样做的后果。您的所有页面都将像这样处理,并且页面的内存/cpu 使用量会更大。

    如果这发生在单个文件中,请确保将其添加到语句中。

    在您的示例中,您应该添加:

    <script>
        var thedata = <?php echo getData(); ?>
    </script>
    

    【讨论】:

    • 感谢您的帮助!奇怪的是,这两条 AddType 行更改了所有网页,因此它弹出一个屏幕,要求保存网页,然后您无法加载它。不知道为什么会这样......我相信它是“application/x-httpd-php”中的“应用程序”。当我拿出它时,它不再破坏网页。
    猜你喜欢
    • 2011-07-07
    • 2020-02-06
    • 2011-06-22
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2011-11-18
    • 2017-10-18
    • 1970-01-01
    相关资源
    最近更新 更多