Verificando CPF com PHP

Publicado por Diego em 23/11/2010

[ Hits: 7.669 ]

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

Instalando TeamViewer no Ubuntu multiarch

PHP - Utilizando Chainning

Formatos de vídeo na WEB

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

Interface gráfica para configuração do SAMBA

Leitura recomendada

Configurar repositório APT local no Debian sem a necessidade de configurar o Apache

Gerenciando KVM pelo Windows

Backups completos com Clonezilla

Como realizar um ataque de DOS com a ferramenta T50 / como derrubar um site

Atualizando as bibliotecas fo Basic Linux

  

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