Php 突出显示包含头文件的当前页面

Php 突出显示包含头文件的当前页面,php,html,navbar,Php,Html,Navbar,我在每个页面上都有一个包含php的头文件。在导航中,我使用php检查是否有人登录。根据检查的不同,标题看起来不同(不同的列表项) 遵循这些准则(),我知道实现目标的一个好方法是声明一个basename[PHP_SELF]-变量,然后向这些列表项添加一些代码 <header> <nav class="nav collapsible"> <ul class="list nav__list collapsible__content"

我在每个页面上都有一个包含php的头文件。在导航中,我使用php检查是否有人登录。根据检查的不同,标题看起来不同(不同的列表项)

遵循这些准则(),我知道实现目标的一个好方法是声明一个basename[PHP_SELF]-变量,然后向这些列表项添加一些代码

<header>
<nav class="nav collapsible">
<ul class="list nav__list collapsible__content">
    <?php
      echo "<li class='nav__item'><a href='contact.html'>Contact</a></li>";
      echo "<li class='nav__item'><a href='about.html'>About</a></li>";
  ?>

  </ul>
  <a class="nav__brand" href="index.html"><img class="link__logo" src="images/logoSmall.png" /></a>
  <svg class="icon icon--white nav__toggler">
    <use xlink:href="images/sprite.svg#menu"></use>
  </svg>
  <title class="header__title">My Page</title>
  <ul class="list nav__list collapsible__content">
    <?php
    if (isset($_SESSION["userid"])) {
      echo "<li class='nav__item'><a href='index.html'>Home</a></li>";
      echo "<li class='nav__item'><a href='shop.php'>Shop</a></li>";
      echo "<li class='nav__item'><a href='shoppingCart.html'>Shopping Cart</a></li>";
      echo "<li class='nav__item'><a href='includes/logout.inc.php'>Log Out</a></li>";
    }
    else {
      echo "<li class='nav__item'><a href='index.html'>Home</a></li>";
      echo "<li class='nav__item'><a href='signup.php'>Sign Up</a></li>";
      echo "<li class='nav__item'><a href='login.php'>Log In</a></li>";
    }
  ?>
  </ul>
</nav>
但这就是我搞砸的地方。因为我已经在html中使用php来检查用户是否登录了,所以我会迷失在将php代码添加到列表项所需的单引号或双引号中

<header>
<nav class="nav collapsible">
<ul class="list nav__list collapsible__content">
    <?php
      echo "<li class='nav__item'><a href='contact.html'>Contact</a></li>";
      echo "<li class='nav__item'><a href='about.html'>About</a></li>";
  ?>

  </ul>
  <a class="nav__brand" href="index.html"><img class="link__logo" src="images/logoSmall.png" /></a>
  <svg class="icon icon--white nav__toggler">
    <use xlink:href="images/sprite.svg#menu"></use>
  </svg>
  <title class="header__title">My Page</title>
  <ul class="list nav__list collapsible__content">
    <?php
    if (isset($_SESSION["userid"])) {
      echo "<li class='nav__item'><a href='index.html'>Home</a></li>";
      echo "<li class='nav__item'><a href='shop.php'>Shop</a></li>";
      echo "<li class='nav__item'><a href='shoppingCart.html'>Shopping Cart</a></li>";
      echo "<li class='nav__item'><a href='includes/logout.inc.php'>Log Out</a></li>";
    }
    else {
      echo "<li class='nav__item'><a href='index.html'>Home</a></li>";
      echo "<li class='nav__item'><a href='signup.php'>Sign Up</a></li>";
      echo "<li class='nav__item'><a href='login.php'>Log In</a></li>";
    }
  ?>
  </ul>
</nav>


    我没有意识到我可以在if条件之后关闭php语句,然后编写html代码@miken32,这是你给我的一个非常有用的链接,非常感谢

    在没有引用所有内容的情况下重新编写代码后,很容易遵循我OP中链接中的指导原则,并且完全有效:

    <header>
    <nav class="nav collapsible">
    
    <ul class="list nav__list collapsible__content">
        <li class='nav__item <?= ($activePage == 'contact.html') ? 'active':''?>'><a href='contact.html'>Contact</a></li>
        <li class='nav__item <?= ($activePage == 'about.html') ? 'active':''?>'><a href='about.html'>About</a></li>
      </ul>
    
      <a class="nav__brand" href="index.html"><img class="link__logo" src="images/logoSmall.png" /></a>
      <svg class="icon icon--white nav__toggler">
        <use xlink:href="images/sprite.svg#menu"></use>
      </svg>
    
      <ul class="list nav__list collapsible__content">
        <?php
        if (isset($_SESSION["userid"])) { ?>
          <li class='nav__item <?= ($activePage == 'index.html') ? 'active':''?>'><a href='index.html'>Home</a></li>
          <li class='nav__item <?= ($activePage == 'shop.php') ? 'active':''?>'><a href='shop.php'>Shop</a></li>
          <li class='nav__item <?= ($activePage == 'shoppingCart.html') ? 'active':''?>'><a href='shoppingCart.html'>Shopping Cart</a></li>
          <li class='nav__item <?= ($activePage == 'logout.php') ? 'active':''?>'><a href='includes/logout.inc.php'>Log Out</a></li>
        <?php }
        else { ?>
          <li class='nav__item <?= ($activePage == 'index.html') ? 'active':''?>'><a href='index.html'>Home</a></li>
          <li class='nav__item <?= ($activePage == 'signup.php') ? 'active':''?>'><a href='signup.php'>Sign Up</a></li>
          <li class='nav__item <?= ($activePage == 'login.php') ? 'active':''?>'><a href='login.php'>Log In</a></li>
        <?php }
      ?>
      </ul>
    
    </nav>
    </header>
    
    
    

    谢谢大家!

    不要像这样回显HTML。请参阅以获得一些替代方案。我们甚至不清楚为什么在PHP
    echo
    语句中会出现这种情况。它们里面没有PHP。@miken32,你可以像那样
    echo
    HTML。这很好(虽然双引号会被解析,所以它们需要更长的时间来执行)。OP应该
    session_start()chr()
    调用来输出HTML。这并不意味着你可以这样做,但这并不意味着你应该一直这样做。特别是在这里,OP说这会给他们带来麻烦(“我在单引号或双引号中迷失了”),尝试通过echo最小化文本/html静态(或大部分是静态)块的输出是一个非常好的主意。