segunda-feira, 28 de maio de 2012

Codeigniter - Validando CPF em Formulários

Salve, salve...
E para fechar a série de validações em formulários, só falta a validação de CPF.

Essa função deve ser inserida no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"


Obs: Nessa função, o formato do CNPJ deve ser: 000.000.000-00
Sem os pontos, barra e traço apresentará erro!!


Função:
     /**
      * Verifica se o CPF informado é valido
      * @param     string
      * @return     bool
      */
     function valid_cpf($cpf)
     {
         // Verifiva se o número digitado contém todos os digitos
         $cpf = str_pad(preg_replace('/[^0-9]/', '', $cpf), 11, '0', STR_PAD_LEFT);

         // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
         if (strlen($cpf) != 11 ||
             $cpf == '00000000000' ||
             $cpf == '11111111111' ||
             $cpf == '22222222222' ||
             $cpf == '33333333333' ||
             $cpf == '44444444444' ||
             $cpf == '55555555555' ||
             $cpf == '66666666666' ||
             $cpf == '77777777777' ||
             $cpf == '88888888888' ||
             $cpf == '99999999999') {
             return FALSE;
         } else {
             // Calcula os números para verificar se o CPF é verdadeiro
             for ($t = 9; $t < 11; $t++) {
                 for ($d = 0, $c = 0; $c < $t; $c++) {
                     $d += $cpf{$c} * (($t + 1) - $c);
                 }

                 $d = ((10 * $d) % 11) % 10;
                 if ($cpf{$c} != $d) {
                     return FALSE;
                 }
             }
             return TRUE;
         }
     }

     // --------------------------------------------------------------------

Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários:
$lang['valid_cpf'] = "O campo %s não é um CPF válido. Use o formato 000.000.000-00";

Para chamar a validação do formulário em um controller, utilize e seguinte linha:
$this->form_validation->set_rules('cpf', 'CPF', 'required|valid_cpf');

Duvidas?? Deixe um comentário...

Codeigniter - Validando CNPJ em formulários

Salve!

Segue agora uma função para validar CNPJ em formulários com o Codeigniter.
Essa função deve ser inserida no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"


Obs: Nessa função, o formato do CNPJ deve ser: 00.000.000/0000-00
Sem os pontos, barra e traço apresentará erro!!


Função:
 /**
      * Verifica se o CNPJ é valido
      * @param     string
      * @return     bool
      */
     function valid_cnpj($str)
     {
         if (strlen($str) <> 18) return FALSE;
         $soma1 = ($str[0] * 5) +
                 ($str[1] * 4) +
                 ($str[3] * 3) +
                 ($str[4] * 2) +
                 ($str[5] * 9) +
                 ($str[7] * 8) +
                 ($str[8] * 7) +
                 ($str[9] * 6) +
                 ($str[11] * 5) +
                 ($str[12] * 4) +
                 ($str[13] * 3) +
                 ($str[14] * 2);
         $resto = $soma1 % 11;
         $digito1 = $resto < 2 ? 0 : 11 - $resto;
         $soma2 = ($str[0] * 6) +
                 ($str[1] * 5) +
                 ($str[3] * 4) +
                 ($str[4] * 3) +
                 ($str[5] * 2) +
                 ($str[7] * 9) +
                 ($str[8] * 8) +
                 ($str[9] * 7) +
                 ($str[11] * 6) +
                 ($str[12] * 5) +
                 ($str[13] * 4) +
                 ($str[14] * 3) +
                 ($str[16] * 2);
         $resto = $soma2 % 11;
         $digito2 = $resto < 2 ? 0 : 11 - $resto;
         return (($str[16] == $digito1) && ($str[17] == $digito2));
     }

     // --------------------------------------------------------------------



Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários:

$lang['valid_cnpj'] = "O campo %s nao e um CNPJ valido. Use o formato 00.000.000/0000-00";


Para chamar a validação do formulário em um controller, utilize e seguinte linha:

$this->form_validation->set_rules('cnpj', 'CNPJ', 'required|valid_cnpj');




Duvidas?? Deixe um comentário...

Codeigniter - Validando Datas e Horas em formulários

De volta do submundo dos sumidos...

Eu vou mostrar aqui duas funções para validar Datas e Horas em formulários utilizando o Codeigniter.
Essas funções devem ser inseridas no final do arquivo "Form_validation.php" que geralmente se encontra em: "/* Location: ./system/libraries/Form_validation.php */"

Segue as funções:

     /**
      * Verifica se a data informada é valida, formato padrão dd/mm/yyyy
      * caso precise validar em outros formatos adicione nessa função
      * ex: mm/yyyy, mm/yy, etc
      * @param     string
      * @return     bool
      */
     function valid_date($date, $format = 'dd/mm/yyyy')
     {

         $dateArray = explode("/", $date); // slice the date to get the day, month and year separately

         $d = 0;
         $m = 0;
         $y = 0;
         if (sizeof($dateArray) == 3) {
             if (is_numeric($dateArray[0]))
                 $d = $dateArray[0];
             if (is_numeric($dateArray[1]))
                 $m = $dateArray[1];
             if (is_numeric($dateArray[2]))
                 $y = $dateArray[2];
         }

         return checkdate($m, $d, $y) == 1;
     }

     // ---
  
  // --------------------------------------------------------------------

     /**
      * Verifica se a hora informada é valida, formato padrão HH:ii
      * caso precise validar em outros formatos adicione nessa função
      * 
      * @param     string
      * @return     bool
      */
     function valid_hour($hour)
     {
   if(preg_match("/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/", $hour)){
   return TRUE;
  }else{
   return FALSE;
  }

     }

     // ---

Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários.

//---
$lang['valid_date'] = "O campo %s nao e uma data (dd/mm/yyyy) valida.";
$lang['valid_hour'] = "O campo %s nao e uma hora (hh/mm) valida.";

/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */


Para chamar a validação do formulário em um controller, utilize e seguinte linha:
//----
$this->form_validation->set_rules('data', 'Data', 'required|valid_date');
//---


Duvidas?? Deixe um comentário...