Php 如何使用inludes导航选择当前页面

Php 如何使用inludes导航选择当前页面,php,select,include,Php,Select,Include,我正在使用php includes来限制页面上的冗余,当从header.php文件调用我的导航时,如何让我的导航选择当前页面,例如使用HOME按钮的特定颜色 如果我说在home.php项中添加一个“active”类,并添加一个样式使其看起来不同,那么我的所有页面都会出现这种情况,这就是为什么我首先使用includes,我怎么能在导航中有一个header.php文件,这也允许每个页面能够显示您当前所在的页面,并反映在导航中 这是header.php文件的nav部分 <ul> &l

我正在使用php includes来限制页面上的冗余,当从header.php文件调用我的导航时,如何让我的导航选择当前页面,例如使用HOME按钮的特定颜色

如果我说在home.php项中添加一个“active”类,并添加一个样式使其看起来不同,那么我的所有页面都会出现这种情况,这就是为什么我首先使用includes,我怎么能在导航中有一个header.php文件,这也允许每个页面能够显示您当前所在的页面,并反映在导航中

这是header.php文件的nav部分

  <ul>
 <li><a href="index.php">About Us</a></li>
 <li><a href="portfolio.php">Portfolio</a></li>
 <li><a href="news.php">News</a></li>
 <li><a href="contact.php">Contact</a></li>
    </ul>
这是header.php文件包含的index.php文件

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

 <div class="span-8" id="welcome">
  <p>Lorem ipsum</p>
 </div>

 <div class="span-16 last" id="slideshow">
  <img src="images/introImage1.png" alt="fountain">
  <img src="images/introImage2.png" alt="bench">
  <img src="images/introImage3.png" alt="bridge">
 </div>

 <?php
  include("includes/footer.php");
  ?>

同侧眼睑

试试这个:

<ul>
<?php 
$pages = array('index.php' => 'About Us', 'portfolio.php' => 'Portfolio', 'news.php' => 'News', 'contact.php' => 'Contact');

foreach($pages as $url => $title) {
   $li = '<li ';
   if($_SERVER[ 'PHP_SELF' ] == $url) {
       $li .= 'class="active"';
   }
   $li .= '><a href="' . $url . '">' . $title . '</a></li>';
   echo $li;
}

?>
</ul>

另一个选项是针对
body
标记设置属性,然后使用匹配对更改任意数量元素的样式

因此,在主(主页)页面上,您可能有:

<body id="home">
<a href="/" class="home">Home</a>
<a href="/about.htm" class="about">About Us</a>

还有一个选择是在实际页面中包含一个CSS语句

<style type="text/css">
  a[href="<?php echo basename( $_SERVER['PHP_SELF'] ); ?>"] ,
  a[href="<?php echo $_SERVER['PHP_SELF']; ?>"] {
  /* Styles for Current Page Links */ }
</style>

a[href=”“],
a[href=”“]{
/*当前页面链接的样式*/}
当然,这取决于浏览器是否能够使用CSS选择器

而且,如果您希望完全确保覆盖指向该文件的所有链接(包括完整URI),则还包括以下选择器:

a[href="http<?php
  echo ( $_SERVER['HTTPS'] ? 's' : '' ).'://'.
    $_SERVER['HTTP_HOST'].(
      ( $_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=443 )
      || ( !$_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=80 ) ?
      ':'.$_SERVER['SERVER_PORT'] : '' ).
    $_SERVER['PHP_SELF']; ?>"]
a[href=“http”]

更新:更正了要使用的PHP变量。

这似乎是有道理的,但是在我查看任何页面时,从未将类active添加到任何页面,我不确定会出现什么问题,我正在复制和粘贴您的代码。我不确定这将如何工作,因为我的主体带有header.php文件,所以我不能有单独的主体ID,它们都是相同的。在这种情况下,这个选择器似乎对我不起作用。我得到的href的位置是this/scatliffRedo/index.php。我是否必须预先输入网址或其他什么东西,所以它是www.somthing.com/scatliffRedo/index.php,选择器才能工作啊,我的错误。选择器引号内的任何内容都需要出现在要设置样式的链接中,以表明它们是正在查看的当前页面。因此,如果您的CSS包含
a[href*=“about.php”]
,那么这将匹配其href属性中包含about.php的任何链接。我必须承认我以前没有使用过这种方法,但我确信(轻微的)黑客攻击应该会奏效。实际上,我将开始试验自己,以找到一个防弹的解决方案。我已经更新了样式声明-它们现在应该可以正常工作了。
a[href="http<?php
  echo ( $_SERVER['HTTPS'] ? 's' : '' ).'://'.
    $_SERVER['HTTP_HOST'].(
      ( $_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=443 )
      || ( !$_SERVER['HTTPS'] && $_SERVER['SERVER_PORT']!=80 ) ?
      ':'.$_SERVER['SERVER_PORT'] : '' ).
    $_SERVER['PHP_SELF']; ?>"]