2011-06-15 105 views
0

我想在/../mahjong.php上显示DIV。所以,即使我去/../mahjong.php?layout它应隐藏的div(因为它是不一样的网址)根据使用PHP的URL显示/隐藏Div

我曾尝试以下:

// 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 ofcourse:

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

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

echo $_SERVER['REQUEST_URI']; 

,并更改为/games/mahjong/mahjong.php?layout,那么,为什么不设置内联的样式?

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

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

非常感谢,

莫里斯

+0

您可能希望将此条件语句直接粘贴到您的模板文件中,并且仅当案例为“true”时才显示div,因为没有理由打印未显示的HTML。 – Wex 2011-06-15 17:25:50

回答

0

更改条件:

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

这将确保请求的URI与字符串结尾。

+0

谢谢大家,这个解决方案对我很有用! – Maurice 2011-06-17 22:23:33

0

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"; 
} 

这可能帮助

0

检查是否PATH_INFOQUERY_STRING是空的......如果没有,那么它是不是你想要的页面。

1

检查是否$_GET阵列已被填充或不:

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

应该是足够的,如果你不手动添加到$_GET阵列,这将是非常愚蠢的。

+0

'$ _GET'是否包含在$ _SERVER ['PATH_INFO']中填充的相同信息? – 2011-06-15 17:33:18

+0

不,但它包含查询字符串中的任何内容(如果存在)。 – 2011-06-15 19:44:33

+0

如果URL是'/foo/bar.php/more/info?var1 = val1&var2 = val2',该怎么办? – 2011-06-15 19:45:41