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.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo