我得到了一些传统的代码这样的:

<?PHP
    if(isset($_GET['pagina'])=="homepage") {
?>
HtmlCode1
<?php 
} else { 
?>
HtmlCode2
<?php 
} 
?>

我不知道为什么但是这似乎是工作。该htmlcode1装当我有吗?pagina=的主页和htmlcode2装载时pagina var不存在,或是别的东西(还没有真正见过别的东西,只是没有).该网站是使用。php4(不知道确切的版本)。但是真的,这怎么工作的?我看过的手册和说isset返回bool..

任何人吗?

有帮助吗?

解决方案

问题在于“==”不是类型敏感的比较。任何(非空)字符串都是“相等”的。布尔值为true,但不是相同(因为你需要使用“===”运算符)。

一个简单的例子,为什么你会看到这种行为:
http: //codepad.org/aNh1ahu8

有关文档的更多详细信息,请参阅:
http://php.net/manual/en/language.operators.comparison.php
http://ca3.php.net/manual/en/types.comparisons.php (与==的松散比较“具体表”

其他提示

isset()返回true或false。在布尔比较中,&quot; homepage&quot; 将评估为 true 。所以基本上你来到这里:

if ( isset(

isset()返回true或false。在布尔比较中,&quot; homepage&quot; 将评估为 true 。所以基本上你来到这里:

<*>

如果pagina等于任何东西,你会看到HtmlCode1。如果未设置,您将看到HtmlCode2。

我刚尝试确认这一点,然后转到?pagina = somethingelse 显示HtmlCode2。

GET['pagina']) == true )

如果pagina等于任何东西,你会看到HtmlCode1。如果未设置,您将看到HtmlCode2。

我刚尝试确认这一点,然后转到?pagina = somethingelse 显示HtmlCode2。

我怀疑这是一个错误,因为将“true / false”与“主页”进行比较并不合理。我希望代码实际上应该是:

if (isset(

我怀疑这是一个错误,因为将“true / false”与“主页”进行比较并不合理。我希望代码实际上应该是:

<*>GET['pagina']) && (

我怀疑这是一个错误,因为将“true / false”与“主页”进行比较并不合理。我希望代码实际上应该是:

<*>GET['pagina'] == "homepage")) { }

一些想法如何这样可以工作(除了从前面提到的"网页"==true):

  • Isset已被重新定义的某个地方?
  • 这是一个自我修改过的版本的PHP?
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top