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

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

问题描述:

我有我所有页面中包含的header.php和footer.php文件。采样页面看起来是这样的 -如何在不同的页面上显示相同的页眉和页脚?

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

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

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

虽然这个运作良好的服务器上,但是当我在本地测试[XAMPP在Windows 7]页,我得到的页脚以下错误消息,而不是头的,同样 -

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。

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

+0

仰望PHP'include'功能 – Max

似乎$_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') ?> 


?> 
+0

谢谢!另外,如何更改$ _SERVER变量的值? –

+0

这个变量由PHP服务器自动填充。不过看起来你已经在你的本地环境中创建了一个子文件夹“f”来进行测试。请看我编辑的答案,它可能会帮助你。 –

+0

作品!为我挽回了一生。我在本地创建子文件夹是因为我同时在多个项目/网站上工作。我希望这是正确的做法!? –

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

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

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

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

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

我已经试过这已经,虽然它在本地工作,但在服务器上,不显示页眉/页脚!相反,我可以更改$ _SERVER的值吗? –

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

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

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