Teste Condicional em PHP: comando if
Até o momento, todos nossos scripts funcionam e rodam da mesma maneira, da primeira para última linha de comandos, sempre na mesma ordem, no mesmo fluxo.
Porém, no mundo real, não é assim que as coisas funcionam: algumas coisas são executadas, outras não, as vezes acontece isso e as vezes acontece aquilo, tudo dependendo de testes condicionais realizados.
Para alterar o controle de fluxo de um script, usamos o comando if em PHP, cuja sintaxe é:
<?php if(expressão){ codigo codigo codigo } ?>
Ou seja, começamos com o comando if, depois um par de parêntesis com alguma expressão dentro, que será testada (teste condicional).
Depois, um par de chaves: { }, com um código dentro.
Caso o teste condicional seja verdadeiro (TRUE), o código dentro do IF será executado.
Se for falso (FALSE), o código dentro do IF não será executado, o interpretador PHP pula todo esse bloco de código.
Exemplo de uso do IF
No código abaixo, pedimos a idade do usuário.
Depois, testamos se ela é maior que 17, se for, ele é maior de idade e exibimos a mensagem:
você já pode dirigir.
Se o valor fornecido pelo usuário for menor que 18, essa mensagem nunca será exibida:
<html> <head> <title>Curso PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Sua idade: <input type="number" name="age" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $idade = $_GET['age']; if($idade > 17){ echo "Você já pode dirigir!"; } ?> </body> </html>
Você pode trocar: $idade > 17
Pelo teste: $idade >= 18
Note que é a mesma coisa, o importante é o teste ser TRUE, e para isso basta fornecer um número igual ou maior que 18.
Exemplo de uso do IF
O script a seguir, recebe a idade do usuário e se ela for menor que 65, avisa que não pode se aposentar ainda!
Veja:
<html> <head> <title>Curso PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Sua idade: <input type="number" name="age" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $idade = $_GET['age']; if($idade < 65){ echo "Você nao pode se aposentar!"; } ?> </body> </html>
Se você digitar 65, o teste condicional já passa a ser FALSO e o IF não é executado.
Exemplo de uso de IF com string
Podemos fazer comparação com outros tipos de dados, não só números.
Por exemplo, o script a seguir pede uma senha ao usuário e só exibe a mensagem 'Entrando no sistema...' se ele acertar a senha:
<html> <head> <title>Curso PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Senha: <input type="text" name="senha" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $senha = $_GET['senha']; if($senha == 'php2112'){ echo "Senha correta, entrando no sistema!"; } ?> </body> </html>
Analisando o código, você consegue descobrir qual a senha?
Sim, é 'php2112'. Tente escrever phP2112, entrou no sistema? Por que ?
Vamos fazer o contrário agora, exibir uma mensagem de erro quando o usuário errar a senha.
E quando ele erra? Sempre que diferente de 'php2112'...diferente te lembra algo?
Sim, pode usar o operador de comparação !=
Veja como fica o código:
<html> <head> <title>Curso PHP Progressivo</title> </head> <body> <form action="home.php" method="get"> Senha: <input type="text" name="senha" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $senha = $_GET['senha']; if($senha != 'php2112'){ echo "Senha errada! Não vai conseguir hackear!"; } ?> </body> </html>
Agora substitua o operador != por <> e certifique-se que são iguais.
Seria bacana se tivesse uma mensagem para caso você acerte a senha e outra para caso você erre, não acha? É o que vamos fazer no próximo tutorial de nossa seção de testes condicionais em PHP.