Porque validar formulários no codeigniter?
No desenvolvimento de qualquer tipo de aplicação, não podemos considerar que os usuários sempre irão fornecer valores corretos e válidos em formulários. Seja por falha humana ou por intenções maliciosas, é possível que valores inválidos sejam submetidos, comprometendo a integridade dos dados e a segurança da aplicação.
Nesse artigo, aprenderemos como validar os valores informados nos campos de formulários utilizando os recursos do framework CodeIgniter, permitindo que apenas dados válidos sejam submetidos.
Passo 1: Configurar a view
A view, nesse exemplo, conterá o formulário de cadastro de um novo usuário, simulando um tipo comum de página que requer a submissão de dados em um site. A partir disso, iremos criar, dentro do diretório view, uma pasta chamada cadastro e, dentro dela, adicionaremos um arquivo formulario.php com o conteúdo da Listagem 1.
01 <?php if(isset($mensagens)) echo $mensagens; ?>
02 <form action="index.php/cadastro/cadastrar" method="post">
03 <p>Usuário :</p>
04 <input type="text" name="usuario" value="" size="50" />
05 <p>Senha :</p>
06 <input type="text" name="senha" value="" size="50" />
07 <p>Confirmar Senha :</p>
08 <input type="text" name="senhaconf" value="" size="50" />
09 <p>E-mail :</p>
10 <input type="text" name="email" value="" size="50" />
11 <div><input type="submit" value="Enviar" /></div>
12 </form>
Linha 1: Exibimos o retorno da função validation_errors(), que irá devolver quaisquer mensagens de erro retornadas pelo validador. Caso não haja nenhum problema, ela retorna uma string vazia;
Linhas 2 a 12: criamos um formulário básico para exemplificar as validações.
Nossa view irá exibir um formulário conforme o apresentado na Figura 1.
Passo 2: Implementar o controller
Agora, devemos criar o controller Cadastro e, nele, inserir uma função pública para exibir nossa página com o formulário. O código dessa função é exposto a seguir:
public function index() {
$this->load->view('cadastro/formulario');
}
Logo após, ainda no controller, precisamos criar a função que irá receber os dados e validá-los. Se ocorrerem erros na validação, o controller retorna novamente para a view, que agora irá exibir a(s) mensagem(ns) de erro. Caso a validação seja aprovada, será exibida uma mensagem avisando que o formulário foi enviado com sucesso. O código dessa função pode ser visto na Listagem 2.
01 public function cadastrar() {
02 $this->load->library('form_validation');
03 $this->form_validation->set_rules('usuario', 'Usuário',
'required|min_length[5]|max_length[12]');
04 $this->form_validation->set_rules('senha', 'Senha', 'required|min_length[7]',
array('required' => 'Você deve preencher a %s.'));
05 $this->form_validation->set_rules('senhaconf', 'Confirmação de Senha',
'required|matches[senha]');
06 $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
07 if ($this->form_validation->run() == FALSE) {
08 $erros = array('mensagens' => validation_errors());
09 $this->load->view('cadastro/formulario', $erros);
10 } else {
11 echo "Formulário enviado com sucesso.";
12 }
13 }
Listagem 2. Função de validação e recebimento do formulário
Linha 2: carregamos a biblioteca responsável pela validação;
Linha 3: inserimos uma regra para validar o campo usuario, definindo o campo como obrigatório, com no mínimo de cinco e no máximo 12 caracteres;
Linha 4: adicionamos uma regra para validar o campo senha, definindo o campo como obrigatório e com no mínimo sete caracteres;
Linha 5: adicionamos outra regra, agora para validar o campo senhaconf, definindo-o como obrigatório e verificando se ele é igual ao campo senha;
Linha 6: inserimos uma regra para validar o campo email, definindo-o como obrigatório e verificando se o dado é um e-mail válido;
Linhas 7: executamos a validação com o método run(), retornando false quando ocorrer algum problema na validação e true quando todas as informações estiverem corretas;
Linha 8: criamos uma variável para repassar para a view as mensagens de erro;
Linha 9: carregamos a view, passando para ela a variável que contém as mensagens de validação;
Linha 11: exibimos a mensagem “Formulário enviado com sucesso”, caso nenhum problema de validação seja encontrado.
Ao terminar nosso controller, podemos acessar o projeto pelo navegador e visualizar a página de cadastro exibida na Figura 1. Nesse momento, se tentarmos enviar o formulário sem nenhum dado, serão exibidas as mensagens de validação conforme a Figura 2.
Por sua vez, ao simularmos o envio do campo Confirmar Senha com um valor diferente do contido no campo Senha, teremos a mensagem exibida na Figura 3.
Passo 3: Entendendo um pouco mais o método set_rules()
O CodeIgniter permite que você defina várias regras de validação para um determinado campo. Para isso, utilizamos o método set_rules(), como no código a seguir:
$this->form_validation->set_rules('usuario', 'Usuário', 'required');
Esse método recebe três parâmetros como entrada:
- O nome do campo: aquele que é definido no atributo name do input;
- O label do campo: um nome amigável, que será usado na mensagem de erro;
- As regras de validação usadas para o campo: A lista de regras pode ser encontrada no site oficial do framework.
Ao concluir essas etapas, teremos nossa aplicação funcionando de forma mais segura, orientando o usuário sobre como proceder caso insira informações inválidas. Além disso, manteremos a integridade do banco de dados, pois somente serão aceitas informações válidas.
Links Úteis
- Manual do PHP:
Site oficial do PHP - MYSQL:
Site Oficial do Mysql - PHP no Wikipedia:
Mais informações sobre o Wikipedia
Saiba mais sobre PHP ;)
- Introdução ao framework PHP CodeIgniter:
Veja neste artigo uma breve apresentação e introdução ao framework PHP CodeIgniter, que trabalha sobre o modelo MVC e nos fornece diversas ferramentas para agilizar o desenvolvimento das aplicações. - Trabalhando com controllers no CodeIgniter:
Veja neste artigo como funcionam os controllers no framework PHP CodeIgniter, como criar seus controllers e funções. - Utilizando templates no CodeIgniter:
Aprenda como criar e utilizar templates com o framework CodeIgniter e simplifique a construção e o reuso de páginas em suas aplicações.
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.