0

我正在尝试围绕 php 和 html 进行研究,并想就我认为的基础知识寻求一些帮助。

我知道您可以在带有标签的 .html 页面中的单行上运行 php 脚本。当我从 localhost 运行的多行(它生成一个表)上的脚本较长时,问题就出现了:

 <?php
  $rows = 10; // define number of rows
  $cols = 10;// define number of columns

  echo "<table border='1'>"; 

  for($tr=1;$tr<=$rows;$tr++){ 

  echo "<tr>"; 
    for($td=1;$td<=$cols;$td++){ 
           echo "<td>Fill</td>"; 
    } 
  echo "</tr>"; 
  } 

  echo "</table>"; 
  ?>

上面将在第一个“>”符号之后以纯文本形式出现,所以我猜出于某种原因,当我关闭 php 代码段并以纯 HTML 执行 rest 时页面会读取它(我通过 apache 运行文件)。我知道您可以将文件重命名为 .php ,并让整个工作正常,但我想了解 PHP 在 HTML 页面上的行为方式。

所以我有两个问题:

1)是否可以让 .html 阅读上面的代码片段而不将其分开?我试过 htmlspecialchars,没有帮助。

2) 是否可以将上述片段作为单独的 .php 文件,我从 .html 页面调用,就像我可以调用 javascript 函数一样?我试过<?php include 'field.php';?>哪个没有用。我研究了 .htaccess,但它似乎是实时版本的解决方案,它对我不起作用。

谢谢!

4

3 回答 3

3

以上将在第一个“>”符号后以纯文本形式出现,

未处理 PHP。可能是因为您正在使用.html扩展程序。使用.php.

.html仅当您明确告诉 Apache 将.html其视为 PHP 文件时才有效。

于 2013-09-12T21:40:18.473 回答
0

您需要将 Apache 设置为将 HTML 文件读取为 PHP。找到你的 php.conf,它通常是 etc 目录,如:/etc/apache/mods-enabled/php.conf

将以下内容添加到文件中:

<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

然后重启apache服务:

service apache restart

服务器上的模块也可能有不同的名称。Apache 可能是apache或者apache2你的 PHP 可能有名字后的版本php5。这应该反映在您的 PHP conf 文件所在的目录和您重新启动的服务中。

一旦您的 conf 文件更新,Apache 会将所有 html 文件视为 PHP,您应该能够在整个文件中放置尽可能多的 PHP 代码。注意:PHP 解析器仅在您使用<?php打开(或<?启用短标签时打开)和?>关闭您的 PHP 位时才能工作。

于 2013-09-12T21:42:53.597 回答
0

看起来您实际上根本没有评估 PHP。我建议您查看源代码,然后您会看到浏览器实际上正在尝试将所有这些呈现为文档中的标签:

<?php
  $rows = 10; // define number of rows
  $cols = 10;// define number of columns

  echo "<table border='1'>

.html虽然拥有扩展名为PHP(或 Perl、Python 或其他任何东西)的文件并非不可能,但服务器默认设置这种设置并不常见。我建议将文件的扩展名更改为.php. 如果您的服务器完全设置为处理 PHP,那将导致它正确评估脚本。

于 2013-09-12T21:40:54.233 回答