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

如何在PHP中根据当前页面为导航菜单项动态添加active类

动态为PHP导航菜单添加active类的解决方案

第一步:获取当前页面标识

在inc_header.php开头添加PHP代码,精准获取当前访问的页面标识,适配你通过index.php加URL参数加载页面的逻辑:

<?php
// 获取当前执行的PHP文件名(如 home.php)
$current_page = basename($_SERVER['PHP_SELF']);

// 处理index.php默认加载首页的情况
if ($current_page === 'index.php') {
    // 若有page参数,取参数拼接成文件名;无参数则默认首页
    $current_page = isset($_GET['page']) ? $_GET['page'] . '.php' : 'home.php';
}

// 可选:添加页面白名单,防止恶意参数注入,提升安全性
$allowed_pages = ['home', 'about', 'contact', 'services'];
if (isset($_GET['page']) && !in_array($_GET['page'], $allowed_pages)) {
    $current_page = 'home.php';
}
?>

第二步:修改导航菜单HTML结构

在导航的每个<li>元素中,通过三元运算符判断当前页面是否匹配,匹配则输出class="active":

<ul class="nav-menu">
    <li <?php echo ($current_page === 'home.php') ? 'class="active"' : ''; ?>>
        <a href="index.php?page=home">Home</a>
    </li>
    <li <?php echo ($current_page === 'about.php') ? 'class="active"' : ''; ?>>
        <a href="index.php?page=about">About</a>
    </li>
    <li <?php echo ($current_page === 'contact.php') ? 'class="active"' : ''; ?>>
        <a href="index.php?page=contact">Contact</a>
    </li>
    <!-- 兼容直接访问独立页面的情况 -->
    <li <?php echo ($current_page === 'services.php') ? 'class="active"' : ''; ?>>
        <a href="services.php">Services</a>
    </li>
</ul>

常见问题排查

  • 先在页面中输出<?php echo $current_page; ?>,确认当前页面标识是否正确,若不符检查$_SERVER['PHP_SELF']的返回值。
  • 注意文件名大小写:如果你的文件是Home.php,可以用strtolower($current_page)统一转小写后再比较,避免大小写不匹配问题。
  • 确保inc_header.php中的PHP代码在导航HTML之前执行,否则$current_page变量无法被导航代码读取。

内容的提问来源于stack exchange,提问作者Godly K Mathews

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:05:15