Verificando CPF com PHP

Publicado por Diego em 23/11/2010

[ Hits: 7.681 ]

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

Interface gráfica para configuração do SAMBA

Configuração de Impressoras no Linux

Configurando o charset de suas páginas Web

PHP - Utilizando Chainning

Firebird - Como localizar GENERATORS de uma tabela

Leitura recomendada

Guia de instalação do Lazarus para Kurumin

Iniciando o Slackware direto na interface gráfica

FreeNX - Evolução remota

openSUSE Leap 42.1 - 6 dicas de pós-instalação

Endian 2.4 - Adicionando usuário para visualizar relatórios do Sarg

  

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