【问题标题】:Check if URL = Desired URL (PHP)检查 URL 是否 = 所需的 URL (PHP)
【发布时间】:2015-02-05 14:37:47
【问题描述】:

我正在尝试检查当前 URL 是否等于创建链接类 active(引导程序)所需的 URL。

例子

<?php
    If ($currenturl = "show.php?name=123") {
      ?><li class="active"><a href="show.php?name="123"">123</a></li><?php
    }else{
        ?><li class=""><a href="show.php?name="123"">123</a></li><?php
    }
?>

当前网址 -> $currenturl = $_SERVER['REQUEST_URI']

现在,如果我在 show.php?name=456 上,我就有这个

【问题讨论】:

  • basename($_SERVER['PHP_SELF']);

标签: php html


【解决方案1】:

确保您在if 中进行了正确的比较。您当前正在使用赋值运算符:

注意区别:

if($currenturl = "show.php?name=123") // assignment =
  // changes $currenturl to "show.php?name=123"
  // and then tests if("show.php?name=123") equivalent to if(true)
  // see also http://stackoverflow.com/questions/5940626/evaluation-of-assignment-in-php

if($currenturl == "show.php?name=123") // comparison ==

第二:你设置了$urlpage,但是比较$currenturl。使用$urlpage

代码:

<?php $urlpage = $_SERVER['REQUEST_URI']; ?>
<?php if ($urlpage == "/show.php?nom=123") { ?>
    <li class="active"><a href="/show.php?nom=123">123</a></li>
<?php } else { ?>
    <li class=""><a href="/show.php?nom=123">123</a></li>
<?php } ?>

使用三元运算符的替代方法:

<li <?php echo ($urlpage == "/show.php?nom=123") ? 'class="active"' : ''; ?>><a href="/show.php?nom=123">123</a></li>

应用于所有页面:

<?php $pages = array('123', '456', '789'); ?>
<ul>
    <li <?php echo (!isset($_GET['nom']) ? 'class="active"' : ''); ?>><a href="show.php">Home</a></li>
    <?php foreach($pages as $page): ?>
        <?php if (isset($_GET['nom']) && $_GET['nom'] == $page) { ?>
            <li class="active"><a href="/show.php?nom=<?php echo $page; ?>"><?php echo $page; ?></a></li>
        <?php } else { ?>
            <li class=""><a href="/show.php?nom=<?php echo $page; ?>"><?php echo $page; ?></a></li>
        <?php } ?>
    <?php endforeach; ?>
</ul>

【讨论】:

  • @dotpush 可以添加补充信息,无需删除三元方式,因为这是一种替代方法,也是答案的一部分
  • 它不起作用...它只是没有激活!另外,当我点击链接时,它会转到show.php?name=,但没有 123 或其他。
  • @Ghost:哎呀,对不起。我什至没有看到三元方式部分移除。
  • @dotpush 没问题,我把它拿回来了,没关系
  • @InxDev 我改版了,你可以再看看,
【解决方案2】:

另一种方法是使用 $_GET

if(isset($_GET['name']))
 if($_GET['name'] == '123') 
  ...

等等

【讨论】:

  • 是的,我更改为If ($_GET['name'] == '123'),但我收到一个错误:Notice: Undefined index: name in C:\xampp\htdocs\cadeau noel\cadeau.php on line 40。第 40 行 -> If ($_GET['name'] == '123') {
  • 网址是什么样的? (在您的浏览器中)
  • 这也是为什么我建议把if(isset($_GET['name'])) 如果你的 URL 没有 ?name=123 或 name=124, name=125 等放在 URL 的末尾,它只会给出一个警告。所以要么在代码的前面添加if(!isset($_GET['name'])) $_GET['name'] = '';
  • 感谢您,但我使用了 Ghost 答案,效果更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多