Percebi que ultimamente os CPFs vem mudando e com essa mudan�a a maioria dos c�digos encontrados na internet ficaram obsoletos.
Ent�o nas minhas buscas encontrei no pr�prio site da receita federal como fazer uma valida��o de um CPF.
Para o nosso exemplo vamos usar o CPF fict�cio 123.456.789-09
Vamos come�ar a valida��o pelo primeiro d�gito verificador, distribuindo os nove primeiros d�gitos do CPF.
Logo abaixo, da esquerda para a direita, vamos colocar os n�meros decrescentes de 10 � 2.
Ent�o vamos multiplicar as colunas, colocando o resutado de cada uma, em uma terceira linha, conforme mostrado a seguir:
| Nove primeiros d�gitos antes do tra�o | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| Valor de 10 at� 2 para multiplicar | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| Resultado da multiplica��o | 10 | 18 | 24 | 28 | 30 | 30 | 28 | 24 | 18 |
Agora somamos os resultados obtidos: 10 + 18 + 24 + 28 + 30 + 30 + 28 + 24 + 18 = 210
OBS.: essa parte do c�lculo � que se diferencia nos sites em que o algoritmo ficou obsoletoPegamos o valor encontrado (210) multiplicamos por 10 e ent�o dividimos por 11. Vamos considerar para o quociente desta divis�o apenas o valor inteiro. O resto da divis�o ser� respons�vel pelo c�lculo do primeiro d�gito verificador:
(210 * 10) / 11 = 190
Resto = 10
Se o valor do resto da divis�o for igual a 10 ou 11, este valor ser� considerado automaticamente como 0 (zero), como � o caso de nosso exemplo.
Ent�o comparamos se o resto obtido � igual ao primeiro n�mero do d�gito verificador, caso n�o seja igual, o CPF � inv�lido e os passos seguintes n�o precisam ser feitos. No nosso caso � igual!
| Resto encontrado | Primeiro d�gito verificador | |
| 0 | 0 | Resultados iguais!! |
Caso a condi��o acima seja verdadeira ent�o repetimos os passos verificando agora os dez primeiros d�gitos (incluindo o primeiro d�tigo verificador)
| Dez primeiros d�gitos | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
| Valor de 11 at� 2 para multiplicar | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| Resultado da multiplica��o | 11 | 20 | 27 | 32 | 35 | 36 | 35 | 32 | 27 | 0 |
Soma dos resultados obtidos: 11 + 20 + 27 + 32 + 35 + 36 + 35 + 32 + 27 + 0 = 255
Pegamos o valor encontrado (255) multiplicamos por 10 e ent�o dividimos por 11. Vamos considerar para o quociente desta divis�o apenas o valor inteiro. O resto da divis�o ser� respons�vel pelo c�lculo do segundo d�gito verificador:
(255 * 10) / 11 = 231
Resto = 9
Se o valor do resto dessa segunda divis�o for igual a 10 ou 11, este valor ser� considerado automaticamente como 0 (zero), o que n�o � o caso de nosso exemplo.
Ent�o comparamos se o resto obtido � igual ao segundo numeral do d�gito verificador, caso n�o seja igual, o CPF � inv�lido. No nosso caso � igual!
| Resto encontrado | Segundo d�gito verificador | |
| 9 | 9 | Resultados iguais!! |
Caso a condi��o acima seja verdadeira ent�o o CPF � v�lido.
Veja o c�digo na integra retirado do c�digo fonte do site da receita federal
<script>
function TestaCPF(strCPF) {
var Soma;
var Resto;
Soma = 0;
if (strCPF == "00000000000") return false;
for (i=1; i<=9; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i);
Resto = (Soma * 10) % 11;
if ((Resto == 10) || (Resto == 11)) Resto = 0;
if (Resto != parseInt(strCPF.substring(9, 10)) ) return false;
Soma = 0;
for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i);
Resto = (Soma * 10) % 11;
if ((Resto == 10) || (Resto == 11)) Resto = 0;
if (Resto != parseInt(strCPF.substring(10, 11) ) ) return false;
return true;
}
var strCPF = "12345678909";
alert(TestaCPF(strCPF));
</script>Saiu na DevMedia!
- D� o pr�ximo passo ap�s o HTML/CSS!:
Nesta s�rie falamos sobre o que vem depois do HTML/CSS. Saiba o que � requisi��o, resposta e se prepare para os seus primeiros passos na programa��o back-end.
Saiba mais sobre JavaScript ;)
- JavaScript Tutorial:
Neste artigo veremos como utilizar o c�digo javascript em nossas aplica��es web e websites. Teremos uma introdu��o � essa maravilhosa linguagem que cada vez mais cresce no desenvolvimento web. - Guia Completo de JavaScript:
Nesse guia conheceremos a linguagem de programa��o JavaScript, baseada em scripts client-side de p�ginas web e orientada a objetos. Veremos a sintaxe b�sica e bibliotecas que v�o nos ajudar a criar p�ginas ricas em recursos.