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> 
">Listagem 1. View com o formulário de envio do cadastro

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.

Formulário de registro de novo usuário
Figura 1. Formulário de registro de novo usuário

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.

Mensagens da validação dos campos
Figura 2. Mensagens da validação dos campos

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.

Mensagens da validação do campo Confirmar Senha
Figura 3. Mensagens da validação do campo Confirmar Senha

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:

  1. O nome do campo: aquele que é definido no atributo name do input;
  2. O label do campo: um nome amigável, que será usado na mensagem de erro;
  3. 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

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.