Validação de Formulários com Ajax e PHP


Eu administro vários portais que são constantemente atualizados por designers e jornalistas. Essa atualização constante acarreta na criação de diversos formulários, e mesmo radicalizando seu uso, a tarefa de validação dos dados sempre é trabalhosa e redundante.

Tentei o Dreamweaver, que tem uma rotina de validação. Mas, além do código não ser flexível, não é reutilizável. Isso cria arquivos maiores e de difícil manutenção dos códigos. Em busca de uma solução para esse problema encontrei duas classes fantásticas. Uma de validação no lado do cliente utilizando Ajax e outra no lado do servidor utilizando PHP. Ambas têm código limpo, bem estruturado e o melhor: são reutilizáveis e de fácil implantação.

O motivo de usar dois tipos de validação é simples: além da vantagem de não ter que recarregar a página caso algum dado não seja válido, a classe de validação Ajax não é obstrutiva, ou seja, se o usuário utiliza algum dispositivo que não permita o uso de javascript, o formulário não deixará de ser validado.

Validação de formulários com Ajax

Na validação no lado do cliente eu utilizo uma classe Ajax chamada Really easy field validation with Prototype. Sua implantação é muito fácil. Basta adicionar ao campo do formulário um comando no atributo class.

Exemplo de uso

Exemplo de validação de formulários em Ajax

No exemplo acima, se o usuário clicar no botão “Submit” sem preencher o campo “nome” o formulário não será enviado e uma mensagem de erro irá aparecer.

Se você quiser usar outra mensagem de erro é possível adicionado o atributo “title” ao elemento. O script automaticamente substitui a mensagem padrão pela definida. Por exemplo:

No elemento do formulário:

Segundo exemplo de validação de formulários em Ajax

E na instância do objeto:

Terceiro de validação de formulários em Ajax

Você não precisa saber nada de Ajax pra utilizar esta classe, basta adicionar os atributos corretos e personalizar as mensagens e você já tem uma validação no lado do cliente. Junto com o arquivo da classe estão outros exemplos.

Validação de formulários com PHP

Para validação no lado do servidor eu utilizo uma classe feita em PHP chamada Validate_fields Class. Defino o tipo de dado que o campo do formulário receberá, e se o campo é de preenchimento obrigatório, e a classe automaticamente efetua a validação.

Os tipos de dados validados são:

  • Texto (padrão)
  • Numeros
  • Decimais
  • Data
  • E-mail
  • URL
  • Checkboxes (e radio buttons)

Exemplo de uso

Exemplo de validação de formulários em PHP

Note que o uso é bem simples e não precisamos ficar criando funções para analisar cada campo. Também coloquei outros exemplos de uso junto aos arquivos desta classe.

Depois que passei a utilizar estas duas classes nunca mais tive dor de cabeça na hora de criar e validar formulários!

[tags]Validação, Formulários, PHP, Ajax, Classes[/tags]

Informações e Links

Junte-se comentando, lendo o que os outros dizem ou colocando um link a partir do seu blog.


Outros Posts

Deixe um Comentário

Me diga o que você pensa sobre este assunto e/ou artigo.

Comentários

Muito bom o artigo Pedro, não conhecia aquela classe.

Somente uma anotação, si a primeira validação for no cliente, não e necessário utilizar Ajax, a menos que queiramos fazer a validação no servidor sem ter que submeter a pagina.

Olá, Diego!
Realmente me expressei mal. Obrigado pela observação!

É engraçado pq isso ja ta no ar há tanto tempo e ninguém nunca deve ter testado pra postar que esse ex seu do Ajax não funciona, se não for mantido na instância a parte do script, essa:
function formCallback(result, form) {
window.status = “valiation callback for form ‘” + form.id + “‘: result = ” + result;
}
ai sim implementa :
var teste = new Validation(‘teste’);.. mais não da maneira que vc colocou e sim :

var teste = new Validation(‘teste’, {immediate : true, onFormValidate : formCallback});

.. Se eu tiver equivocado me mostre o erro por favor.

Rodrigo muito bom o script mas onde eu coloco a referencia para poder executar o arquivo que faz o envio da mensagem?

Não entendi muito bem essa linha:

” method=”post” >

Pode me ajudar?

<form action="<?php echo $_SERVER['envia.php']; ?>" method="post" style="padding-left:65px;">

Rodrigo Bom dia!!!

Achei muito legal seu exemplo!!!

Gostaria de saber se tem como eu alterar a mensagem que aparece assim que digito no campo “senha” uma senha menor que 6 caracteres????

Abraços

É?

Não!

Comentários!!!!

Cara sua dica não tem o que comentar… São horas e horas em cima de uma função para realizar o que esta faz em questão de segundos, hehehehe

Valeu e muito obrigado por ter compratilhado seu conhecimento.

Gostaria de saber como eu posso juntar as duas classes, pois baixei cada uma delas e elas vêm com exemplos separados, ou seja, ou eu faço a validação com PHP ou com Ajax, mas gostaria de saber como posso juntar, a de Ajax pra economizar processamento no servidor e a de PHP pra aumentar a segurança.

Obrigado.

Olá amigo… muito boa a classe de validação.
Tenho uma quetão sobre ela. Meus formulários são enviados via ajax (onclick=”metodoEnvia()”)
Como posso fazer para fazer funcionar assim?
Vou tentar ir no valida.js e trocar o onSubmit por onclick.
Bom se vc tiver alguma ajuda por favor me avise.
obrigado.

Querido Armando, sinto muito pelo seu aborrecimento com o pensamento lusitano do dono deste site, mas gostaria de lhe informar que antes de ser um bom programador é preciso saber escrever o português corretamente.
Quando se há oposição ao que foi dito, usamos o MAS e não MAIS. Esta última apenas é usada para ter a noção de quantidade.
Bons estudos!
Até logo!

Rodrigo… esse script que tu organizou aí, tá muuuuito maneiro… mas eu tenho algumas “muitas” dúvidas em relação a ele.

Por exemplo:
» Tem como, após a validação eu retornar uma mensagem de sucesso??
» Esses campos de alerta… aparecem obrigatoriamente abaixo do input que está sendo validado?? Tem como escolher um local para eles aparecerem, tipo, no topo do form, dentro de uma DIV?

» acho que eh soh!! ;)

Poderia fornecer ou disponibilizar um tuto ou apostila, até mesmo website explicando a funcionalidade dos simbolos.
!/[^\d]/
! = Negação.

Gostaria de aperfeiçoar e adaptar as validações conforme as necessidades exigidas.

Rodrigo, muito bom a validação em PHP. Só uma questão, como faço para processar o form depois de validado?

Abraço

legal. teria como criar um exemplo de um form só na página, tipo contato (nome, email, fone, mensagem), com a validação e resposta em ajax e o envio via arquivo .php? seria bem útil. obrigado!

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.

vlw pela class

Ola Rodrigo so tenho que agradecer a profissionais como você direto simples e preciso

Alguém me ajuda pela amor de Deus.
Estou usando essa função de validação em ajax para forms usando method=”POST”. Mas, gostaria de carregar o dentro de uma div mas a função de validação não funciona, pq?
Ele mostra as mensagem de validação obrigatória e depois faz os cadastros com os campos em branco e isso não pode acontecer.
Me ajudem pelo amor de Deus!
abradeço desde já!

Esqueci de falar. Estou usando uma função chamada post.js para carregar a página responsável pela inclusão dos dados no banco em uma div.

Me ajudem!
abraço