You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未登录时隐藏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>

关键修改说明

  1. 条件控制显示:用<?php if (isset($_SESSION['user_name'])): ?>和<?php endif; ?>包裹.section1和Logout表单,只有当$_SESSION['user_name']存在(即用户已登录)时,才会渲染这部分内容。
  2. 修复HTML语法错误:原代码中<span/>标签闭合错误,改为标准的</span>,避免页面渲染异常。
  3. 确保session生效:session_start()必须放在所有输出之前,这是Session正常工作的前提。

内容的提问来源于stack exchange,提问作者Kaveesha Chamod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:37:28