设置了变量但未在echo语句中显示

时间:2018-06-30 15:19:49

标签: javascript php html web

我想在nav标签中显示登录会员的用户名,但运行后不显示任何内容。我已经检查了变量$_SESSION['u_user']= $row['username'];,它显示了正确的用户名。下面是代码。请帮我修复它。

   <?php 
   if(isset($_SESSION['u_id'])) {
       echo '<li class="dropdown"><a href="#" class="dropdown-toggle"><?php $_SESSION["u_user"]; ?><span class="caret"></span></a>
                <ul class="dropdown-menu">
                <li><a href="login">DashBoard</a></li>
                <li><a href="includes/logout.php" >Log out</a></li>
            </ul>
        </li>';
    }
    else {
      echo '<li class="dropdown"><a href="#" class="dropdown-toggle">Account<span class="caret"></span></a>
      <ul class="dropdown-menu">
        <li><a href="login.php">Log in</a></li>
        <li><a href="signup.php">Sign up</a></li>
      </ul>
    </li>';
    }
    ?>

1 个答案:

答案 0 :(得分:3)

您可以在<?php语句中打开和关闭PHP标签(?>echo)。那不是它的工作原理。浏览器将其视为HTML标记,因此隐藏了两者之间的信息。您应该改用以下代码:

echo '<li class="dropdown"><a href="#" class="dropdown-toggle">' . $_SESSION["u_user"] . '<span class="caret"></span></a>
  <ul class="dropdown-menu">
            <li><a href="login">DashBoard</a></li>
            <li><a href="includes/logout.php" >Log out</a></li>
        </ul>
    </li>';

请注意,以这种方式执行此操作不是一个好主意。如果您在验证用户名时不十分注意,您将很容易受到XSS攻击。您应该转义用户名输出(如htmlentities($_SESSION["u_user"]中一样),或者甚至更好的方法是使用为您处理这些事情的模板引擎。