Feed e Twitter

Feed RSS Twitter

Busca

Por Lustosa em 30/12/2008 às 00:10

Parte do trabalho de qualquer programador é validar os dados que são entrados em seus programas. No PHP, isso não é diferente. O meio mais convencional para se receber dados dos usuários é através de formulários, mas também pode-se receber dados de outras formas (XML, arquivos, conexões de rede, entre outras).

A validação é importantíssima, pois sem ela, o programa pode trabalhar com dados inválidos, e muitos problemas podem acontecer:

Resultados inesperados
Se o programa pede, por exemplo, um número entre 1 e 100, o usuário entra com 200, e o programa não faz essa checagem, pode acabar utilizando o número em alguma conta e terminando com um resultado inválido.
Segurança
Um dos problemas mais graves da falta de checagem, quando por exemplo a entrada do usuário é utilizado diretamente em uma query SQL ou como parâmetro de um comando. Os dados entrados pelo usuário podem manipular a query ou o comando e conseguir acesso não autorizado ao banco de dados ou ao servidor.
Dados inconsistentes
Se, por exemplo, em um campo onde deveria se entrar um CEP, o usuário coloca números inválidos, letras, ou deixa em branco, o a empresa terá problemas, por exemplo, para enviar uma mala direta postal para seus clientes.

No caso de aplicações em PHP, com a saída via web, a validação ainda deve ser feita, preferencialmente, duas vezes: uma do lado do cliente (em Javascript) para se evitar que os dados inválidos sejam enviados, e outra do lado do servidor (em PHP), para evitar que dados inválidos tenham sido enviados por um navegador sem Javascript (ou com o Javascript desligado), ou maliciosamente por alguem. A validação em Javascript foge do escopo deste artigo, que irá tratar da validação dos dados em PHP.

A classe PEAR Validate

Sempre que possível, devemos evitar reescrever código já disponível, principalmente quando o código já disponível é de qualidade, como acontece com a maioria das classes disponíveis no PEAR, que devem seguir uma padronização de código bem rigorosa para serem aceitas.

Uma das classes disponíveis no PEAR é a Validate, que é uma classe genérica para validação de dados. A classe pode validar os seguintes tipos de dados:

  • Números, podendo-se especificar valor mínimo e máximo, e número de casas decimais;
  • Emails, checando a sintaxe do email, se o domínio é válido, e se o email está no formato da RFC 822;
  • Strings, com constantes pré-definidas para facilitar a validação de maiúsculas e minúsculas, tamanho da string, entre outras;
  • Datas, com checagem de data mínima e máxima, e se o formato é RFC 822;
  • URLs, checando se o formato é válido (de acordo com a RFC 2396).

A utilização é bastante simples. Uma vez instalada (é apenas um arquivo, chamado Validate.php), basta chamar estaticamente seus métodos, passando o dado a ser validado como primeiro parâmetro, e as opções de validação (quando aplicáveis) como segundo parâmetro. Os métodos retornam true ou false, indicando se a validação passou ou não.

Por exemplo, para validar um número em $num como sendo um número de 0 a 100 com no máximo 2 casas decimais, a chamada seria a seguinte:

<?php
$opt = Array('decimal' => '.',
             'dec_prec' => 2,
             'min' => 0,
             'max' => 100);
if (Validate::number($num, $opt)) {
    // validação ok!
}
?>

Os outros métodos são semelhantes, e para se saber quais são as opções que podem ser passadas, basta olhar os métodos disponíveis diretamente na documentação da classe, ou então diretamente dentro do arquivo da classe.

A classe PEAR Validate_ptBR

Assim como a classe Validate provê métodos úteis para a validação de dados genéricos, temos também disponível a classe Validate_ptBR, que disponibiliza métodos para validação de dados específicos do Brasil. A classe valida os seguintes tipos de dados:

  • CEP, com 8 dígitos;
  • CPF, checando se os dígitos verificadores correspondem ao restante do número;
  • CNPJ e PIS, também usando a checagem de dígitos verificadores;
  • Estados brasileiros (siglas);
  • Números telefônicos, com ou sem código de área;
  • Placas de carros, com 3 letras e 4 dígitos.

A utilização da classe é semelhante à classe Validate, bastando chamadas estáticas aos seus métodos. Assim como na classe Validate, para saber os métodos disponíveis e seus parâmetros, basta examinar a documentação da classe.

Artigos relacionados

Arquivado em programação
Tags: ,

Feed RSS para os comentários deste artigo.


2 comentários em “Validação de dados em PHP”

  1. André G comentou:

    Olá, eu também fiz uma postagem sobre validação de email, só que usei um método muito funcional, que verifica se realmente o host existe.

    http://www.gasparimsat.com/index.php/21/08/2009/validacao-do-email-pelo-host-usando-php/

    Ex: A pessoa escreve email@bol.com.br, ele verifica se o host “Bol” existe.

  2. André comentou:

    realmente você está certo, logo vou postar dessa forma e colocando os créditos é claro.
    Muito Obrigado.


Copyright 2009 Ataraxia!   Sinopse