我遇到了问题。我使用 curPageUrl()函数找到我文件的链接,并将其用作“活跃”字样。获得一些 CSS 效果。
这是curPageUrl()代码:
function curPageURL() {
$pageURL = 'http';
if ($_SERVER['HTTPS'] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER['SERVER_PORT'] != "80") {
$pageURL .= $_SERVER['SERVER_NAME'] . ":" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
} else {
$pageURL .= $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
}
return $pageURL;
}
这是我的HTML代码:
<a href='home.php'><li class="<?php if (curPageUrl() == 'http://something/home.php') {echo 'active';} ?>">Home</li></a>
但问题开始时我开始使用$ _GET []方法,所以下一个链接 http://something/home.php?some_get_code不再活跃了。
如何在 home.php 之后连接所有内容,以便我的链接仍然有效?
答案 0 :(得分:1)
使用此:
<a href='home.php'>
<li class="<?php if (strpos(curPageUrl(),'http://something/home.php') !== false) {echo 'active';} ?>">Home</li>
</a>
使用PHP的strpos
功能。
答案 1 :(得分:0)
你正朝着错误的方向挖掘。页面的完整URL可以通过多种方式更改:查询参数,脚本名称或路径,服务器名称;更改其中任何一个,代码将失败。
尝试更简单的方法:将home.php
(不是完整的网址,而只是脚本名称)与basename($_SERVER['PHP_SELF'])
进行比较。
<a href='home.php'>
<li class="<?php if (basename($_SERVER['PHP_SELF']) == 'home.php') {echo 'active';} ?>">Home</li>
</a>
函数basename()
仅保留它作为参数接收的路径中的文件名(最后/
之后的部分),而$_SERVER['PHP_SELF']
包含调用脚本的路径处理当前请求。
此方法存在一些缺点:如果您的站点使用位于多个目录中的脚本,则它们不能具有通用名称。此外,如果您出于某种原因需要重命名'home.php',您必须记住也要更改上面的代码。
更好的方法是在'home.php'中设置一个变量并在布局文件中检查它的值:
// home.php
$page = 'home';
include 'view/home.php';
// view/home.php
<a href='home.php'>
<li class="<?php if ($page == 'home') {echo 'active';} ?>">Home</li>
</a>
这种方式将机制与URL,服务器名称,路径,文件名或其他可能在更改时破坏它们的外部因素分离。