【问题标题】:Show/Hide Div Based on URL using PHP使用 PHP 基于 URL 显示/隐藏 Div
【发布时间】:2019-05-13 02:57:31
【问题描述】:

我只想在 /../mahjong.php 上显示 DIV。所以即使我去 /../mahjong.php?layout 它应该隐藏 div(因为它不是同一个 url)

我尝试了以下方法:

// We're NOT on the home page
if (strpos($_SERVER['REQUEST_URI'], "/games/mahjong/mahjong.php") >= 0) {
  $style = "display: none";
}
else {
  $style = "display: inline";
}

当然还有我的 div:

<div class="menu" id="menu" style="<?php echo $style; ?>">

但是如果我去 /games/mahjong/mahjong.php?layout 它不会改变风格。我附和了:

echo $_SERVER['REQUEST_URI'];

又变成了/games/mahjong/mahjong.php?layout,那为什么不设置为inline呢?

 if (strpos($_SERVER['REQUEST_URI'], "/games/mahjong/mahjong.php") === false) {

也没有用。 (这将显示 div 并且从不隐藏它)我错过了什么?

非常感谢,

莫里斯

【问题讨论】:

标签: php html css


【解决方案1】:

检查$_GET 数组是否已填充:

<?php if (empty($_GET)): ?>
<div>
...
</div>
<?php endif; ?>

如果您不手动添加到 $_GET 数组中应该就足够了,这将是非常愚蠢的。

【讨论】:

  • $_GET 是否包含与$_SERVER['PATH_INFO'] 中填充的相同信息?
  • 否,但它包含查询字符串中的任何内容(如果存在)。
  • 如果网址是/foo/bar.php/more/info?var1=val1&amp;var2=val2怎么办
【解决方案2】:

将您的条件更改为:

strrpos($_SERVER['REQUEST_URI'], '/games/mahjong/mahjong.php') === strlen($_SERVER['REQUEST_URI']) - strlen('/games/mahjong/mahjong.php')

这将确保请求 uri 以该字符串结尾。

【讨论】:

    【解决方案3】:

    strpos();只搜索那个字符串,在这两种情况下,都会找到字符串 strpos();不是精确搜索!

    // We're NOT on the home page
    if (strpos($_SERVER['REQUEST_URI'], "/games/mahjong/mahjong.php?layout") >= 0) {
      $style = "display: inline";
    }
    else {
      $style = "display: none";
    }
    

    或者你可以使用

    // We're NOT on the home page
    if (isset($_GET['layout'])) {
      $style = "display: inline";
    }
    else {
      $style = "display: none";
    }
    

    这可能会有所帮助

    【讨论】:

      【解决方案4】:

      检查PATH_INFO AND QUERY_STRING 是否为空...如果不是,则不是您想要的页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-19
        相关资源
        最近更新 更多