Php 突出显示包含头文件的当前页面
我在每个页面上都有一个包含php的头文件。在导航中,我使用php检查是否有人登录。根据检查的不同,标题看起来不同(不同的列表项) 遵循这些准则(),我知道实现目标的一个好方法是声明一个basename[PHP_SELF]-变量,然后向这些列表项添加一些代码Php 突出显示包含头文件的当前页面,php,html,navbar,Php,Html,Navbar,我在每个页面上都有一个包含php的头文件。在导航中,我使用php检查是否有人登录。根据检查的不同,标题看起来不同(不同的列表项) 遵循这些准则(),我知道实现目标的一个好方法是声明一个basename[PHP_SELF]-变量,然后向这些列表项添加一些代码 <header> <nav class="nav collapsible"> <ul class="list nav__list collapsible__content"
<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。请参阅以获得一些替代方案。我们甚至不清楚为什么在PHPecho
语句中会出现这种情况。它们里面没有PHP。@miken32,你可以像那样echo
HTML。这很好(虽然双引号会被解析,所以它们需要更长的时间来执行)。OP应该session_start()在发送任何头文件之前,您还可以构造几千个chr()
调用来输出HTML。这并不意味着你可以这样做,但这并不意味着你应该一直这样做。特别是在这里,OP说这会给他们带来麻烦(“我在单引号或双引号中迷失了”),尝试通过echo最小化文本/html静态(或大部分是静态)块的输出是一个非常好的主意。