Verificando CPF com PHP

Publicado por Diego em 23/11/2010

[ Hits: 7.068 ]

Blog: http://www.vivaolinux.com.br/~usrlinux

 


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

Formatos de vídeo na WEB

Curso gratuito de JAVA

Configurando o charset de suas páginas Web

Firebird - Como localizar GENERATORS de uma tabela

Interface gráfica para configuração do SAMBA

Leitura recomendada

Fazendo o wireless do laptop Acer Aspire 5040/5043 funcionar com Linux

Calculo de dias úteis entre duas datas em PHP

Xubuntu + LXDE

Controle de internet por usuário

A arquitetura WAP - Conceitos gerais

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts