如果此页面显示此节目显示此

问题描述:

在除联系页面外的所有页面上,我希望它在inc-header.php include中显示以下内容。如果此页面显示此节目显示此

<p><a href="contact.php">Contact</a></p> 

contact.php的页面,我想让它显示:

<p><a href="index.php">Home</a></p> 

这应该是可能的正确吗?

+0

为什么不包含一个通用菜单包含到每个文件中的所有链接?只有“家”的联系是上世纪一种过时的做法。 –

<?php 
if (stripos($_SERVER['REQUEST_URI'], 'contact.php')){ 
    echo '<p><a href="index.php">Home</a></p>'; 
} 
else{ 
    echo '<p><a href="contact.php">Contact</a></p>'; 
} 
+0

+1,但是OP没有提及该页面是否为名为'contact.php'的文件。也许基于URL更好? –

+0

谢谢你所有的反馈,上面的工作就完成了。 谢谢! :) – Jezthomp

if ($_SERVER["SCRIPT_NAME"] == '/contact.php') { 
    echo '<p><a href="index.php">Home</a></p>'; 
} else { 
    echo '<p><a href="contact.php">Contact</a></p>'; 
} 
+1

在我的服务器上,这需要与'/contact.php'进行比较,因为它包含一个前导斜杠。不确定这是否是服务器特定的。 – nickb

的快速和肮脏的解决方案是:

<?php 
$current_page = 'contact'; 
include('inc_header.php'); 
.... 
?> 

在inc_header.php:

<?php 
if($current_page == 'contact') { 
    // show home link 
} else { 
    // show contact link 
} 
?> 
+0

你在哪里设置'$ current_page'的值? – Nico

+0

in contact.php! (假设contact.php是加载联系页面的文件,并放置了inc_header.php包含语句) – giorgio

有一个名为$_SERVER['PHP_SELF']一个全局变量包含网页的名称目前要求。与basename()结合这应该工作:

if(basename($_SERVER['PHP_SELF'], '.php') == 'contact') { 
    // Contact page 
} else { 
    // Some other page 
} 

你可以用一个简单的if语句做到这一点,但这只会对您的联系人页面工作。你也可以使用在你INC头文件的简单功能,将工作像这样:

function LinkToPageOrHome($script, $title){ 
    if (strtolower($_SERVER[ 'SCRIPT_NAME' ]) == strtolower($script)){ 
     $script = 'home.php'; 
     $title = 'Home'; 
    } 
    echo '<p><a href="' . $script. '">' . htmlentities($title) . '</a></p>'; 
} 

这有点从设计的角度来看钝的办法,但你可以在多个模板使用LinkToPageOrHome('page.php', 'My Page');,从不担心有一个页面链接到它自己。