Como trabalhar com validação de formulários em php

Como trabalhar com validação de formulários em php

05/09/2017 às 16:00WordPress

Validar os dados que são enviados através de seus formulários deve fazer parte da sua rotina de segurança, os prejuizos que um formulário sem qualquer validação podem trazer são uma enorme dor de cabeça, que pode influenciar a entrega de suas mensagens, o aumento das mensagens de spam para a sua conta, quem sabe até problemas graves de segurança quando o envio de arquivos anexos é permitido, quando você não tem nenhuma segurança mínima para manter as coisas em ordem, pode estar se prejudicando aos poucos.

Já reunimos uma checklist que você precisa seguir para iniciar qualquer projeto php, nesse artigo você encontra dicas de como aumentar a acertividade do seu projeto da melhor maneira possível, com isso evita passar por problemas futuros por detalhes que não foram pensados durante o desenvolvimento, evitando ter que refazer alguma coisa no meio do caminho.

O que validar nos formulários?

Hoje está fora de questão deixar formulários sem qualquer validação, são milhares de bots rodando na internet apenas esperando alguma dessas falhas para serem exploradas, e com isso usar um formulário para causar problemas para alguém, seja por encher sua base de dados de informações falsas, causar lentidão no seu site, ou mesmo acabar prejudicando a sua entregabilidade sem as validações de e-mail mais básicas, em uma hospedagem de site otimizada e com todas as verificações de DKIM e SPF você evita passar por esses problemas.

Campos em branco, campos numéricos aceitando letras, links não permitidos, endereços de e-mail inválidos, mensagens em texto simples e não em html, todas essas são tarefas a serem verificadas para não trazerem qualquer problema futuro para a sua base de dados e seu servidor.

Por onde começar as validações?

Atualmente o HTML5 fornece uma validação de dados eficiente, muitos navegadores são compatíveis com esse novo formato e não apresentam qualquer problema em interretar esses dados para que sejam preenchidos corretamente, mas não sabemos de que forma sua página será acessada, por isso precisamos nos proteger com duas camadas de validação, HTML e PHP.

Os campos básicos de validação são definidos da seguinte forma:

<input type="text" name="nomecompleto" id="nomecompleto" required>
<input type="number" name="idade" id="idade" required>
<input type="url" name="site" id="site" required>
<input type="email" name="email" id="email" required>
<textarea name="mensagem" id="mensagem" required></textarea>

Como pode ser observado, todos os campos de input seguem o seu padrão de dados e podem ser definidos como obrigatórios diretamente no html.

Validando os dados de envio

O primeiro passo para que possamos validar os dados que são transmitidos através de nossos formulários é criar os arquivos que farão esse trabalho. Um arquivo "enviar.php" deverá ser criado e vamos definir uma variável que coletará os erros:

// Variável para coleta dos dados de erro
$erro = false;

Precisamos também validar se a postagem dos dados está correta:

// Não podemos deixar um post vazio.
if ( !isset( $_POST ) || empty( $_POST ) ) {
 $erro = 'POST está vazio.';
}

Com as verificações feitas no momento do POST, precisamos configurar as variáveis que serão utilizadas no formulário:

// Variáveis dinâmicas do formulário
foreach ( $_POST as $chave => $valor ) {
 // Limpa todas as tags HTML
 // Limpa os espaços em branco do valor
 $$chave = trim( strip_tags( $valor ) );
 
 // Verifica se existe algum dado nulo
 if ( empty ( $valor ) ) {
 $erro = 'Existem campos em branco.';
 }
}

Limpando as tags html e espaços em branco no início e fim dos dados enviados, podemos começar a validar outros campos.

// Validamos se o campo $idade está preenchido e se é um número.
// Validamos se não existem outros erros.
if ( ( ! isset( $idade) || ! is_numeric( $idade ) ) && !$erro ) {
 $erro = 'O campo idade só aceita números.';
}

Podemos inclusive realizar verificações condicionais, onde verificamos e validamos condições que precisam ser atendidas.

// Validamos se o campo $site está preenchido e se é uma URL válida.
// Validamos se não existem outros erros.
if ( ( ! isset( $site ) || ! filter_var( $site, FILTER_VALIDATE_URL ) ) && !$erro ) {
 $erro = 'O campo site precisa de uma URL válida.';
}

Conferimos o campo e-mail da mesma forma, com várias validações juntas que vão delimitar

// Validamso se o campo $email está preenchido e se é um e-mail válido.
// Validamos se não existem outros erros.
if ( ( ! isset( $email ) || ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) && !$erro ) {
 $erro = 'O campo email precisa de um endereço válido.';
}

Após essas validações, se nenhum erro é apresentado, podemos manipular os dados da forma que desejarmos.

// Listamos os erros existentes
if ( $erro ) {
 echo $erro;
} else {
 // Com a variável de erro ainda falsa, você pode manipular os dados.
 // Como exemplo, listamos os dados preenchidos.
 echo "<h1> Veja os dados enviados</h1>";
 foreach ( $_POST as $chave => $valor ) {
 echo '<b>' . $chave . '</b>: ' . $valor . '<br><br>';
 }
}

O código é um exemplo prático de como podemos tratar a validação de dados e manipular sem erros qualquer informação que desejarmos.

Conclusão

Com esse exemplo de manipulação de dados e validação das informações digitadas você consegue planejar qualquer modelo de formulário que precise de atenção na hora de passar segurança para os dados do cliente, para o seu site, e para o seu servidor de hospedagem de site. Agora você pode aplicar a mesma lógica a qualquer outro projeto e ainda criar novas regras de validação que pode ser úteis em diversos momentos, continue acompanhando nossos artigos para conseguir mais dicas de como trabalhar com o php.

Gostou de nosso post? Compartilhe: