Limpeza e validação de dados com PHP

Limpeza e validação de dados com PHP

Neste artigo vamos ver como funciona a sanitização e validação de dados com PHP. Você vai ver como é possível tratar dados recebidos a partir de formulários antes de fazer a gravação para o seu banco de dados. 

A padronização e validação de dados é um processo muito importante que garante a qualidade das informações do seu banco de dados.

Qual a diferença entre sanitização e validação?

No processo de sanitização, se remove os caracteres desnecessários. Uma vez feito este processo, se parte para o processo de validação, que consiste em verificar se o dado recebido atende as necessidades de nosso modelo de negócios.

Antes de iniciar a sanitização, é necessário verificar se o campo está sendo recebido. Para isso, fazemos uso da função isset()

 

$CEP = "";

if (isset($_POST["CEP"])){

$CEP = $_POST["CEP"];

}

 

Neste exemplo, verificamos se existe um campo enviado por POST chamado CEP.  Sem a utilização do isset(), caso o campo não exista e você tente fazer a leitura, vai receber um alerta de erro do tipo NOTICE chamado "Undefined index"

Uma vez recebido o dado, podemos proceder a limpeza. O processo de limpeza pode ser composto de remover espaços em branco desnecessários ou padronizar o conteúdo recebido.

Para a remoção de espaços desnecessários utilizamos a função trim(). Esta função remove espaços no começo ou no fim da string.

 

$nome = "  teste 123  ";

$nome = trim($nome);

echo $nome;

 

Para a padronição do conteúdo, podemos padronizar o conteúdo recebido para letras maíusculas ou minúsculas. Para mudar para maíusculo podemos usar strtoupper() e para mudar para minúsculo podemos usar strtolower().

 

$nome = "  teste 123  ";

$nome = trim($nome);

echo strtoupper($nome);

echo strtolower($nome);

 

A remoção de caracteres indesejados também faz parte do processo de sanitização. Por exemplo, você pode querer tratar uma informação do tipo Código Postal (CEP) apenas aproveitando a parte numérica. Uma forma simples seria remover os caracteres indesejados usando str_replace()

 

$CEP = "01532-001";

$CEP = str_replace("-","",$CEP);

echo $CEP;

 

Para este caso, não seria a melhor abordagem. Uma abordagem mais apropriada seria utilizar uma expressão regular, para isso utilizamos a função preg_replace();

 

$CEP = "CEP:01532-001";

$CEP = preg_replace("/[^0-9]/", "", $CEP);

echo $CEP;

 

Agora vamos falar sobre o processo de validação. Com os dados padronizados, o processo de validação pode compreender:

 

- A validação do tipo de dados

- A validação do tamanho da informação

- A validação se o formato está correto.

- Se a informação é unica, ou seja, se ela já não existe em seu banco de dados.

 

Pode ser necessário que uma determinada informação siga um certo tipo de dados, por exemplo o dado ser do tipo número ou data. Para verificar se uma informação é um número podemos usar a função isnumeric().

 

$campo1 = "123";

if (is_numeric($campo1)){

echo "Campo 1 é um número";

} else {

echo "Campo 1 não é um número";

}

$campo2 = "Teste 123";

if (is_numeric($campo2)){

echo "Campo 2 é um número";

} else {

echo "Campo 2 não é um número";

}

 

Para validarmos se uma data é valida podemos utilizar a classe DateTime. Podemos converter o valor num objeto e formatar a resposta para comparar com o valor original. 

 

$data = "30/02/2023";

$d = DateTime::createFromFormat("d/m/Y", $data);

if($d && $d->format("d/m/Y") == $data){

    echo "data valida";

}else{

    echo "data inválida";

}

 

O processo de validação do formato também pode ser feito utilizando filter_input. No exemplo a seguir validamos se um campo chamado idade recebido através de um POST está dentro de um intervalo considerado válido

 

$opcoes = array("options" => array("min_range" => 0, "max_range" => 18 ));

if($idade = filter_input(INPUT_POST, "idade", FILTER_VALIDATE_INT, $opcoes)){

    echo "A idade é até 18 anos";

}else{

    echo "A idade é maior que 18 anos";

}

 

Podemos também usar o filter_input para validar por exemplo se um determinado campo recebido por POST ou GET está no formato de um e-mail válido

 

if($email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL)){

    echo "E-mail válido";

}else{

    echo "E-mail inválido ou não informado";

}

 

Perceba que nos dois exemplos anteriores a função filter_input recebeu um número diferente de argumentos. Os 3 primeiros são obrigatórios, o primeiro é a forma como o dado está sendo recebido, se é através de POST ou GET, o segundo é o nome do campo e o terceiro é o tipo de filtro a ser aplicado. Já o quarto parâmetro é opcional, serve para refinar o filtro aplicado. Uma lista de filtros que podem ser utilizados nesta função pode ser consultado neste link:

 

https://categoriaoutros.com.br/?p=4299

 

Vamos ver agora como funciona a validação do tamanho de uma string. Para retornar a quantidade de caracteres de uma string utilizamos a função strlen();

 

$nome = "TESTE 123";

if (strlen($nome) < 10){

echo "ERRO";

} else {

echo "OK";

}

 

No exemplo acima o código retorna a mensagem ERRO sempre que a string informada tiver menos de 10 caracteres.

A validação se o formato está de acordo com uma determinada regra de negócio depende muito do seu modelo de negócio. Geralmente validações de formato simples podem ser resolvidas utilizando expressões regulares. No exemplo a seguir vamos ver como validar se uma informação está no formato de um CEP válido.

 

$CEP = "01532-001";

if (preg_match("/[0-9]{5,5}([- ]?[0-9]{4})?$/", $CEP))

echo "CEP inválido";

} else {

echo "CEP válido";

}

 

Validações mais específicas como o caso de verificar se um e-mail tem um determinado domínio ou se um determinado número de CPF está no formato certo exigem uma programação mais complexa para ser validados. No artigo a seguir eu mostro como é possível criar uma validação para números de CPF e CNPJ.

 

Validando CPF e CNPJ com PHP

 

 

Outros conteudos que podem ser de seu interesse

Trabalhando com arrays no PHP
18/04/2021PHP

Trabalhando com arrays no PHP

Aprenda como listar, ordenar e pesquisar arrays com PHP

Saiba mais...
Calculando a diferença de dias úteis entre duas datas utilizando PHP
27/03/2022PHP

Calculando a diferença de dias úteis entre duas datas utilizando PHP

Descubra como calcular os dias úteis entre duas datas utilizando PHP

Saiba mais...
Converter arquivo texto em JSON com PHP
08/10/2019PHP

Converter arquivo texto em JSON com PHP

Aprenda uma forma simples de converter um arquivo texto em JSON usando PHP

Saiba mais...

Conteúdo sobre banco de dados sem complicação!


Warning: Cannot modify header information - headers already sent by (output started at /home/storage/f/7d/a9/dbins/public_html/blog/post.php:101) in /home/storage/f/7d/a9/dbins/public_html/blog/ga4_track.php on line 11