Mostrando postagens com marcador Validação. Mostrar todas as postagens
Mostrando postagens com marcador Validação. Mostrar todas as postagens

Como Validar Dados em PHP: Guia Prático com Exercícios Resolvidos

🚀 O que você vai aprender hoje:

  • Conceito Real: Por que validar dados é a diferença entre um dev amador e um profissional.
  • Validação Numérica: Como garantir que o usuário insira notas apenas entre 0 e 10.
  • Segurança de Strings: Criando regras para senhas e logins mais seguros.
  • Exercício Prático: Resolução passo a passo de problemas comuns de lógica.

O que é validação de dados em PHP?

A validação de dados em PHP é o processo de verificar se as informações enviadas por um usuário (via formulários ou APIs) atendem aos critérios técnicos e de negócio antes de serem processadas ou salvas. Ela serve para impedir erros de sistema, garantir a integridade do banco de dados e evitar ataques de segurança como XSS e SQL Injection.

Como desenvolvedor, você precisa adotar um mantra: "Nunca confie na entrada do usuário". Se você pede uma nota, alguém vai tentar digitar "onze" ou "-5". Se pede uma data, alguém vai escrever um texto. Validar é colocar "seguranças" na porta da sua aplicação.

Validando Entrada Numérica em PHP: O Desafio da Nota

Muitas pessoas pesquisam no Google: "Como validar se um número está entre 0 e 10 no PHP?". Esse é um exercício clássico de lógica de programação que utiliza OPERADORES LÓGICOS.

O objetivo é simples: o sistema deve pedir a nota e só aceitar se ela for válida. Veja a implementação moderna e limpa:


<?php
// Verificamos se o formulário foi enviado via GET
$nota = $_GET['number'] ?? null;

if ($nota !== null) {
    // A mágica acontece aqui: verificamos o intervalo
    if ($nota < 0 || $nota > 10) {
        echo "<div style='color: red;'>⚠️ Erro: Insira uma nota de 0 até 10!</div>";
    } else {
        echo "<div style='color: green;'>✅ Sucesso: Nota {$nota} inserida no sistema.</div>";
    }
}
?>

<form action="" method="get">
    <label>Insira uma nota (0 a 10):</label><br>
    <input type="number" name="number" required>
    <input type="submit" value="Enviar Nota">
</form>
Apostila PHP Progressivo

Cansado de depender de tutoriais picados? 📚

Validar dados é apenas a ponta do iceberg. Se você quer dominar a lógica do PHP e criar sistemas profissionais, nossa Apostila PHP Progressivo é o seu mapa do tesouro. Estude offline, resolva exercícios exclusivos e acelere sua entrada no mercado de trabalho.

Quero a Apostila Completa em PDF →

Validando Strings: Segurança em Login e Senha

Um erro comum em segurança é permitir que a senha seja igual ao nome de usuário. Hackers usam scripts de "Brute Force" que testam justamente essas combinações óbvias. No PHP, comparamos strings para evitar isso.

🛠️ Curiosidade: No mundo real, além dessa validação, você usaria funções como `password_hash()` para nunca salvar a senha limpa no banco.


<?php
$nome = $_GET['name'] ?? '';
$senha = $_GET['password'] ?? '';

if (!empty($nome) && !empty($senha)) {
    // Verificação de igualdade (Case Sensitive)
    if ($nome === $senha) {
        echo "<b style='color: red;'>❌ Erro: Por segurança, sua senha não pode ser igual ao login!</b>";
    } else {
        echo "<b style='color: green;'>✔️ Cadastro aprovado! Dados validados.</b>";
    }
}
?>

<form action="" method="get">
    Usuário: <input type="text" name="name" required><br>
    Senha: <input type="password" name="password" required><br>
    <input type="submit" value="Criar Conta">
</form>

💡 Dica de Sênior: Validação no Front-end vs Back-end

Muitos iniciantes perguntam: "Se eu já uso o atributo 'required' ou JavaScript para validar, preciso de PHP?". A resposta é SIM! O JavaScript pode ser desativado ou burlado facilmente. A validação em PHP é a sua última e mais importante linha de defesa.

🚀 Desafio Extra: Confirmação de Senha

Agora que você aprendeu o básico, que tal subir de nível? Um dos fluxos mais comuns em sites é pedir o login, a senha e a confirmação da senha.

Exercício: Altere o código acima para incluir um terceiro campo chamado `confirma_senha`. O sistema só deve dar "Sucesso" se:

  1. O login for diferente da senha.
  2. A senha for exatamente igual à confirmação.

Tente resolver sozinho! Se travar, a lógica completa e as variações deste código estão detalhadas na nossa apostila completa.


🎓 Quer validar seus conhecimentos profissionalmente?

Certificado PHP Progressivo

Ao concluir o nosso curso online, você pode solicitar o seu Certificado de Programador PHP. Ideal para turbinar seu LinkedIn e provar para as empresas que você domina a linguagem.

Clique aqui para obter seu Certificado

Exercício PHP: Como Saber se é Vogal, Consoante ou Número [Código]

🎯 O que você vai aprender nesta aula:

  • Como usar a função ctype_digit() para saber se uma string contém apenas números.
  • Como verificar se uma letra é uma vogal usando arrays.
  • A resolução completa do clássico exercício: "Faça um programa que verifique se uma letra digitada é vogal ou consoante".
  • Boas práticas para tratar dados recebidos de formulários HTML no PHP.

Todo estudante de programação acaba esbarrando neste desafio clássico: "Faça um script que receba uma letra e diga se ela é vogal ou consoante". Parece simples, certo? Você coloca um IF/ELSE e pronto.

Porém, a regra número um do desenvolvimento web é: nunca confie no usuário. E se, em vez de uma letra, ele digitar um número? O seu sistema precisa estar preparado para identificar dígitos antes mesmo de pensar em vogais e consoantes.

Como saber se uma string é apenas número no PHP?

Para descobrir se o valor que o usuário digitou é composto exclusivamente por números (dígitos), o PHP nos fornece uma função nativa maravilhosa chamada ctype_digit().

A sintaxe é direta: ctype_digit($minhaString). Ela avalia a string fornecida e retorna TRUE se todos os caracteres da string forem numéricos. Se houver pelo menos uma letra, espaço ou caractere especial, ela retorna FALSE.

🛠️ Curiosidade Técnica: Diferente da função is_numeric() (que aceita números decimais com pontos ou sinais negativos), a ctype_digit() é estrita e só aceita números inteiros "puros" dentro de uma string (como "123" ou "0").

Exemplo Prático: Verificando se é Dígito

<html>
<head>
  <title>Apostila PHP Progressivo</title>
</head>
<body>
  <form action="" method="get">
    Digite um único caractere:  
    <input type="text" name="carac" maxlength="1" required />
    <input type="submit" value="Testar" />
  </form> 

<?php 
  // Verificamos se o formulário foi enviado para evitar erros
  if(isset($_GET['carac'])) {
      $meuCaractere = $_GET['carac'];
      
      if(ctype_digit($meuCaractere)) {
          echo "<p>O valor digitado <b>É UM NÚMERO</b> (dígito).</p>";
      } else {
          echo "<p>O valor digitado <b>NÃO É</b> um dígito.</p>";
      }
  }
?>
</body>
</html>

🤯 Muitas funções para decorar?

Entender validações como ctype_digit(), is_numeric() e manipulação de strings pode dar um nó na cabeça no começo. Mas você não precisa decorar nada! Com a Apostila PHP Progressivo, você tem o guia de consulta perfeito, com exercícios resolvidos e explicados passo a passo para estudar offline, no seu ritmo.

Baixar Material Completo →

A Solução Completa: Vogal, Consoante ou Número?

Agora que já sabemos como barrar os números intrusos, vamos resolver o problema principal. Se o caractere não for um número, ele é uma letra. Mas como saber de forma inteligente se essa letra é uma vogal?

Uma forma péssima seria fazer um IF gigante: if($letra == 'a' || $letra == 'e' || $letra == 'i'...). Uma forma inteligente é usar um array e a função in_array() do PHP!

💡 Dica: Vamos usar a função strtolower() para converter a letra digitada pelo usuário para minúscula. Assim, não importa se ele digitar "A" maiúsculo ou "a" minúsculo, o nosso código vai reconhecer.

<?php 
  if(isset($_GET['carac'])) {
      // Recebe o caractere e já converte para minúsculo
      $letra = strtolower(trim($_GET['carac']));
      
      // Cria uma lista (array) com as vogais
      $vogais = ['a', 'e', 'i', 'o', 'u'];
      
      // Validação 1: O usuário digitou um número?
      if(ctype_digit($letra)) {
          echo "<h3>Você digitou um NÚMERO! Digite uma letra.</h3>";
      } 
      // Validação 2: A letra está dentro do nosso array de vogais?
      elseif(in_array($letra, $vogais)) {
          echo "<h3>A letra '$letra' é uma VOGAL.</h3>";
      } 
      // Validação 3: Se não é número e não é vogal, só pode ser...
      else {
          echo "<h3>A letra '$letra' é uma CONSOANTE.</h3>";
      }
  }
?>

Pronto! Dessa forma criamos um sistema à prova de falhas. Nós filtramos os números, agrupamos as vogais de forma limpa e otimizamos o tempo do nosso servidor.


Sua lógica de validação já está afiada! Que tal mergulharmos em novas estruturas na próxima aula?

Continuar Curso (Próxima Aula) »