在html中嵌入php,将页眉(页面的顶部)包含到页面中

时间:2010-05-04 13:14:11

标签: php html

我正在尝试将页面顶部(全部为html)放在一个单独的文件中,所以我只需要像菜单栏一样更改一下。 所以我用谷歌搜索了一些,并在这个网站上找到了解决方案,但它不起作用,我不知道为什么。

所以我有一个像article.html的页面,在顶部我有这个:

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01         
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>

<?php  include("/pages/header.php");   ?> 

<!-- rest of the html code -->

在header.php中我有html应该在每个页面的顶部,它以:

开头
<?php
/**
 * @author name
 * website header
 */
?>

<!-- html code -->

所以这有什么不对。当我打开页面article.html并右键单击它来查看源代码时,我可以看到上面的php调用header.php文件。

谢谢!

仅供参考:我在服务器上启用了php

编辑:我将文件路径更改为“../pages/header.php”,现在可以正常工作了。我不知道为什么它会像这样......?

8 个答案:

答案 0 :(得分:4)

你不能在html文件中使用php代码。

article.html重命名为article.php

答案 1 :(得分:2)

你在相对路径的开头放了一个'/'。你应该删除它。这使它成为一条绝对的道路。应该是include("pages/header.php");

答案 2 :(得分:2)

我认为您拥有此页面的页面:<?php include("/pages/header.php"); ?>不是PHP文件...您检查过它的文件扩展名吗?必须是:文章。 php

答案 3 :(得分:2)

include,require,include_once和require_once最适合完整服务器路径。尝试使用类似的东西:

<?php include($_SERVER['DOCUMENT_ROOT'] . '/pages/header.php'); ?>

来自PHP文档:

  

根据文件包含文件   给出的路径,或者,如果没有给出,则   include_path指定。包括()   如果它,构造将发出警告   找不到文件;这是不同的   来自require()的行为,这将是   发出致命错误。

     

如果定义了路径(完整或   相对),include_path将是   完全忽略了。例如,如果是   filename以../开头,解析器   将在父目录中查找   找到所需的文件。

     

有关PHP如何的更多信息   处理包括文件和   包含路径,请参阅文档   include_path

请注意,相对起点始终来自正在执行的文件。因此,如果包含来自许多目录的文件,并且如果可以从许多目录执行入口点,那么在include中使用相对路径和绝对路径会导致错误(该死的,很难解释:)。

另外,正如其他人指出的那样,您不能在纯HTML文件中使用PHP语句(至少在默认情况下是这样)。这些陈述将被视为纯文本。将您的html文件重命名为php,或者使用.htaccess告诉服务器将此文件视为php文件。

答案 4 :(得分:1)

听起来好像您的服务器设置为不将.html文件解析为PHP文件。这是正常的设置 - 尝试将article.html重命名为article.php,看看是否能解决问题。如果是,您可以重新配置服务器以将.html文件解析为PHP(在https://serverfault.com/上询问详细信息),或使用mod_rewrite将.html文件重定向到其.php等效文件

答案 5 :(得分:0)

我没有完全阅读你的问题。实际上听起来你没有通过PHP解释器传递你的代码。 PHP文件是必须由服务器上的程序解释的代码。它们倾向于以扩展名.php结束。您需要查看主机是否提供PHP。他们可能会。如果是这样,您可以尝试将文件重命名为article.php

答案 6 :(得分:0)

检查你的php配置文件(在我的服务器上是/etc/apache/mod_php.conf)以获取以下行

# Load the PHP module
LoadModule php5_module libexec/apache/libphp5.so

# Tell Apache to feed all *.php files through the PHP module
AddType application/x-httpd-php .php .phtml

然后,确保include'或直接请求的每个文件都具有扩展名.php。

答案 7 :(得分:0)

我认为你很清楚如何包括所有其他答案中的作品,但是为了使事情复杂化,我想提一下,你可以反过来:包括.html文件中的.php个文件按预期工作(即,当您设置与服务器相关的路径时,而不是docroot)。

为什么会这样?您从其他答案中了解到,当请求PHP文件时,服务器会将其放入php程序并将结果输出到用户。因此,您必须将原始文件重命名为.php(以便服务器执行此操作)。

现在, PHP里面,你有了include语句。如您所知,它会获取另一个文件并将其嵌入其位置,就像内容在字面上一样(也就是说,假设之前有一个?>,之后是<?php

如果您现在包含一个简单的HTML文件, PHP 将获取该文件并将其放置到位,并评估其中的所有代码。由于HTML文件也是有效的PHP文件,所有发生的事情都是将HTML发送到浏览器。

简而言之:试着理解,什么工具可以做什么:

  • 浏览器(或更常见的是,客户端)发送请求
  • 服务器(例如,Apache)尝试查找适合请求的文件
  • 服务器也看到:“哦,一个PHP文件。我应该通过PHP rpogram管道,我的配置说”
  • PHP 通过每个<?php ... ?>查看服务器中的内容,并尝试将其评估为PHP代码。其他所有内容都保持不变并按原样发送到浏览器。
  • 浏览器获取已解析的响应,即没有其中的任何<?php ... ?>段,因为它们已被处理,然后在发送之前由 PHP 删除

在您的情况下:include语句位于PHP代码段中,因此是PHP“看到”的一部分。它将在服务器上进行评估,从不发送到浏览器。