【发布时间】:2021-08-19 04:58:09
【问题描述】:
我有一个头文件,我在每个页面上都包含了 php。在导航内部,我使用 php 检查是否有人登录。根据检查,标题看起来不同(不同的列表项)。
遵循这些准则 (highlight the current page in menu in php) 我知道实现我的目标的一个好方法是声明一个 basename[PHP_SELF] 变量,然后向这些列表项添加一些代码。
但这就是我搞砸的地方。由于我已经在我的 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>
有人可以帮我弄清楚我的列表项在被回显时应该是什么样子吗?非常感谢!
【问题讨论】:
-
不要像这样回显 HTML。有关一些替代方案,请参阅here。甚至不清楚为什么你在 PHP
echo语句中有这个。其中没有 PHP。 -
@miken32,你可以这样
echoHTML。没关系(虽然双引号会被解析,所以它们需要更长的时间来执行)。 OP 应该在发送任何标头之前session_start();并学习 AJAX。 -
@StackSlave 你可以构造几千个
chr()调用来输出HTML。这不合理。 -
@StackSlave 你可以,但这并不意味着你总是应该。尤其是在这里,OP 说这会给他们带来麻烦(“我迷失在单引号或双引号中”),试图最小化文本/html 的静态(或大部分静态)块的输出通过回声,是一个非常好的主意。