我得到了一些遗留代码:
<?PHP
if(isset($_GET['pagina'])=="homepage") {
?>
HtmlCode1
<?php
} else {
?>
HtmlCode2
<?php
}
?>
我不确切知道为什么,但这似乎有效。当我有?pagina = homepage时加载htmlcode1并且当pagina var不存在时加载htmlcode2或者是其他东西(没有真正看到别的东西,只是不存在)。 该网站使用的是php4(不知道具体版本)。 但实际上,这怎么可行呢?我查看了手册,它说isset返回一个bool ..
任何?
答案 0 :(得分:7)
isset()
返回true或false。在布尔比较中,"homepage"
将评估为true
。所以基本上你来到这里:
if ( isset($_GET['pagina']) == true )
如果pagina等于任何东西,你会看到HtmlCode1。如果未设置,您将看到HtmlCode2。
我刚尝试确认一下,转到?pagina=somethingelse
不显示HtmlCode2。
答案 1 :(得分:4)
我怀疑这是一个错误,因为将“true / false”与“主页”进行比较并没有多大意义。我希望代码实际上应该是:
if (isset($_GET['pagina']) && ($_GET['pagina'] == "homepage")) {
}
答案 2 :(得分:3)
问题是“==”不是类型敏感的比较。任何(非空)字符串与布尔值“相等”,但不与相同(因为您需要使用“===”运算符)。
一个简单的例子,为什么你会看到这种行为:
http://codepad.org/aNh1ahu8
有关文档的详细信息,请参阅:
http://php.net/manual/en/language.operators.comparison.php
http://ca3.php.net/manual/en/types.comparisons.php(具体为“与==的宽松比较”表)
答案 3 :(得分:0)
一些想法如何起作用(除了前面提到的“主页”== true):