Verificando CPF com PHP

Publicado por Diego em 23/11/2010

[ Hits: 7.544 ]

Blog: https://rotadev.blogspot.com/

 


Verificando CPF com PHP



O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte algoritmo.

Informe os 9 primeiros números em uma tabela informando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 na segunda linha da tabela da esquerda para a direita, conforme exemplo abaixo:



1    1   1   4   4   4   7   7   7

10   9   8   7   6   5   4   3   2



Multiplique os valores da primeira e segunda linha informando-os numa terceira linha:



1    1   1   4    4    4    7    7    7

10   9   8   7    6    5    4    3    2

10   9   8   28   24   20   28   21   14



Some os valores da terceira linha.

O resultado deve ser divido por 11, considerando como quociente apenas o valor inteiro, sendo o resto da divisão utilizado no cálculo do primeiro dígito verificador.

Neste caso o resultado da soma é 162, que dividido por 11 obteremos 14 como quociente e 8 como resto da divisão. Se o resto do cálculo for menor que 2, o primeiro dígito verificador do CPF se torna 0 (zero), caso não seja menor que 2 o valor obtido deve ser subtraído de 11.

Calculando o segundo dígito verificador

No cálculo do segundo dígito verificador utilizaremos o primeiro dígito calculado anteriormente. Montaremos uma tabela igual a tabela anterior, mas incrementando um número 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, pois acrescentamos mais um número:



1    1    1   4   4   4   7   7   7   3

11   10   9   8   7   6   5   4   3   2



Na etapa seguinte repetiremos o processo feito para calcular o primeiro digito:



1    1   1    4    4    4    7    7    7    3

11   10   9   8    7    6    5    4    3    2

11   10   9   32   28   24   35   28   21   6



Façamos novamente a divisão pelo número 11, em seguida devemos dividir o total da soma por 11 e considerando o resto da divisão como explicado anteriormente.

Segue a abaixo o código utilizado para realizar o procedimento:

<?php

function isCpf($cpf){

   $cpf = preg_replace("/[^0-9]/", "", $cpf);
   $digitoUm = 0;
   $digitoDois = 0;

   for($i = 0, $x = 10; $i <= 8; $i++, $x--){
      $digitoUm += $cpf[$i] * $x;
   }

   for($i = 0, $x = 11; $i <= 9; $i++, $x--){

      if(str_repeat($i, 11) == $cpf){
         return false;
      }

      $digitoDois += $cpf[$i] * $x;
   }

   $calculoUm  = (($digitoUm%11) < 2) ? 0 : 11-($digitoUm%11);
   $calculoDois = (($digitoDois%11) < 2) ? 0 : 11-($digitoDois%11);

   if($calculoUm <> $cpf[9] || $calculoDois <> $cpf[10]){
      return false;
   }

       return true;
}
?>

Código para utilizar a função, neste caso estou chamando a página PHP onde foi desenvolvida a função através do comando require.

<?php

require("validacao.php");  

$cpf = '111.444.777-63';
if(isCpf($cpf)){    
   echo 'CPF valido';
}
else{  
   echo 'CPF invalido';
}
?>

Até a próxima oportunidade.

Outras dicas deste autor

Configurando o charset de suas páginas Web

Firebird - Como localizar GENERATORS de uma tabela

Livro gratuito - Linux comandos básicos e avançados

PHP - Utilizando Chainning

Conhecendo melhor o PHP

Leitura recomendada

Servidor Jabber rapidinho do Debian 4.0 Linux

Emails da Internet para Intranet com Thunderbird

Entevista de Jon Maddog Hall na TV Cultura

Gerenciamento de usuários e grupos no Linux - LPIC-102

Título: Instalando e configurando wireless no Vector Linux 6.0

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts