如何在不同的页面上显示相同的页眉和页脚?

时间:2011-11-21 11:26:09

标签: php header footer

我有header.php和footer.php文件,我包含在我的所有页面中。示例页面如下所示 -

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

<div id="content">
...
</div> <!-- content -->

<?php include($_SERVER['DOCUMENT_ROOT'].'/footer.php') ?>

虽然这在服务器上运行良好,但是当我在本地测试页面[在Windows 7上运行xampp]时,我得到以下错误消息而不是标题,类似于页脚 -

Warning: include(C:/xampp/htdocs/header.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\f\index.php on line 1

Warning: include() [function.include]: Failed opening 'C:/xampp/htdocs/header.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\f\index.php on line 1

这使得测试非常繁琐,因为我必须上传到服务器进行每次微小的更改。

另外,我挖了WP代码,它使用get-header()来显示header.php文件。我无法完全理解这个功能。我的网站不使用WP。

包含页眉和页脚文件的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

包含任何文件的正确方法是include()或require()函数。 Wordpress使用get_header()函数,因为标题只是1个文件,所以他们创建了一个输出它的函数。

你遇到的问题似乎是$ _SERVER变量的问题。自从我使用PHP以来已经有很长一段时间,但我建议你做的只是使用相对路径。例如,如果header.php和footer.php文件与index.php在同一目录中,您可以这样做:

<?php include("header.php');?>

<div id="content">
...
</div> <!-- content -->

<?php include('footer.php') ?>

答案 1 :(得分:2)

简单有用方式(我在所有项目中都使用此方法):

// find Base path
define( 'BASE_PATH', dirname(__FILE__) );

// include files
include BASE_PATH . '/header.php';
include BASE_PATH . '/footer.php';

答案 2 :(得分:1)

$_SERVER['DOCUMENT_ROOT']似乎指向C:\xampp\htdocs,而您的脚本位于C:\xampp\htdocs\f\,请检查当地环境中$_SERVER['DOCUMENT_ROOT']的值。

编辑:

<?php
$rootDir = "";
if(strpos($_SERVER['HTTP_HOST'],'localhost')===FALSE)
{
  //On Production
  $rootDir = $_SERVER['DOCUMENT_ROOT'];
}
else
{
  //On Dev server
  $rootDir = $_SERVER['DOCUMENT_ROOT'].'/f';
}

<?php include($rootDir.'/header.php');?>

<div id="content">
...
</div> <!-- content -->

<?php include($rootDir.'/footer.php') ?>


?>