未登录时隐藏Section1区块与Logout按钮的PHP实现问题
解决登录状态下页面元素的显示控制问题
你需要实现的需求是:
- 用户未登录时,隐藏页面中的
.section1和Logout按钮,同时显示「登录或注册」链接 - 用户已登录时,在菜单区域显示用户名,同时显示
.section1和Logout按钮
原代码的核心问题是没有对.section1和Logout表单做登录状态判断,导致无论用户是否登录,这两部分都会显示。以下是修正后的完整代码:
<?php session_start(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Home</title> <link rel="stylesheet" href="style.css"> <script src="script.js" defer></script> <script src="https://kit.fontawesome.com/62c1d859ff.js" crossorigin="anonymous"></script> </head> <body> <!-- Header Section --> <div class="nav"> <ul> <li><a href="">Home</a></li> <li><a href="">Orders</a></li> <li><a href="">Contact</a></li> </ul> <div class="icon" id="icon"></div> </div> <div class="menu" id="menu"> <div class="username"> <div class="icon"></div> <h3 class="name"> <?php echo isset($_SESSION['user_name']) ? $_SESSION['user_name'] : '<span class="login_register"><a href="signin.php">Login</a> or <a href="register.php">Register</a></span>'; ?> </h3> </div> <?php if (isset($_SESSION['user_name'])): ?> <div class="section1"> <li><a href="profile.php"><i class="fa-solid fa-user"></i>Your Profile</a></li> <li><a href="settings.php"><i class="fa-solid fa-gear"></i>Settings</a></li> <li><a href=""><i class="fa-solid fa-circle-info"></i>Help</a></li> <li><a href=""><i class="fa-regular fa-message"></i>Send Feedback</a></li> </div> <form action="logout.php" method="POST"> <button type="submit" class="logout"><i class="fa-solid fa-arrow-right-from-bracket"></i>Logout</button> </form> <?php endif; ?> </div> </body> </html>
关键修改说明
- 条件控制显示:用
<?php if (isset($_SESSION['user_name'])): ?>和<?php endif; ?>包裹.section1和Logout表单,只有当$_SESSION['user_name']存在(即用户已登录)时,才会渲染这部分内容。 - 修复HTML语法错误:原代码中
<span/>标签闭合错误,改为标准的</span>,避免页面渲染异常。 - 确保session生效:
session_start()必须放在所有输出之前,这是Session正常工作的前提。
内容的提问来源于stack exchange,提问作者Kaveesha Chamod
相关产品推荐
相关产品推荐

