if($ _ GET [' info'] == ...)不检查

时间:2015-06-12 21:34:35

标签: php if-statement get

我写了一个小小的检查,以便在表单成功验证时显示成功消息。但是我使用的支票不起作用。 $ _GET [' info']是什么并不重要,它只显示所有消息,除非$ _GET [' info]为空。所以即使在info = loggin时它也会显示所有三条消息。有什么帮助吗?

                if(!empty($_GET['info'])){
                    if($_GET['info'] == "succes-paid");{
                        echo "<p class='succes'>De bestelling/inschrijving is succesvol verlopen.</p>";
                    }
                    if($_GET['info'] == "succes-register");{
                        echo "<p class='succes'>U werd succesvol geregistreerd.</p>";
                    }
                    if($_GET['info'] == "login");{
                        echo "<p class='succes'>U werd succesvol ingelogd.</p>";
                    }
                }

2 个答案:

答案 0 :(得分:2)

在每个if语句后面都有一个分号。分号意味着“完成声明”。因此,您的程序认为您已完成if,并且大括号中的所有内容都被视为与if语句分开的块。这就是为什么这些块总是在执行。

答案 1 :(得分:0)

这是因为if条件之后的分号。

这一行实际上是两个陈述。第一个是带条件的if,后跟一个'空'语句,以分号结束。第二个是复合语句(一组{ .. }中的语句块。复合语句根本没有条件,因此它总是被执行。

 if($_GET['info'] == "succes-paid")  ; {echo 'x'}
 condition with no statement  -----^ ^ ^--------^-- compound statement without condition 
                                     \_The semi-colon that separates them. 

你有三次这种情况,因此有三行输出。