Verificando CPF com PHP

Publicado por Diego em 23/11/2010

[ Hits: 7.685 ]

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

Configurando o charset de suas páginas Web

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

PHP - Utilizando Chainning

Case e concatenação no SQL - Ajuste de ordem ou posição na tabela

Leitura recomendada

Monitorando rede com Zabbix

Criando um sistema de arquivos EXT3 em um arquivo

O que é samba

Redimensionando NTFS e EXT (ext3 e ext4)

Expresso Livre, uma alternativa real ao Notes e Exchange

  

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