Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fraile.edu

[Resolvido] Validando CPF

Recommended Posts

Ola pessoal!

 

Já vi muito código por ai que pareciam verdadeiros monstros, onde programadores tentavam explicar algo mas acabavam por complicar ainda mais a busca por uma solução para um determinado problema.

 

A resolução de um problema depende do domínio que cada programador tem ao utilizar uma linguagem de programação. Então seria muito mais fácil para nós que buscamos soluções em fóruns que no cabeçalho do código o programador fizesse uma descrição de como resolver o problema, assim mesmo que o leitor não compreenda o código, através da resolução textual ele mesmo (o leitor) poderá implementar a solução utilizando seu conhecimento e implementando a solução a maneira, alem de portar a ideia a n outras linguagens.

 

Códigos como este já tem aos montes, mas como não serei o ultimo a postar esta redundância...

 

Descrição: Para verificar se um CPF é valido, temos que através de calculo obter dois valores onde ao compara-los com os dois últimos dígitos do CPF eles devem ser iguais.

 

 

Calculando CPF: 1- some o produto dos 9 primeiros dígitos multiplicando-os a partir do numero 10 ate 2 (n1*10,...,n9*2); 2- multiplique a soma por 10; 3 - do resultado obtenha o resto da divisão por 11; 4 - compare: se o resto for 10 atribua o valor zero a décima posição do CPF senão atribua o resto; 5 - repita o procedimento a partir do primeiro passo porem agora você ira multiplicar até a décima posição começando a multiplicar o primeiro digito por 11 depois 10 até 2; compare o segundo digito obtido ao décimo primeiro digito e faça a mesma atribuição, zero se o resto for igual a 10 ou o próprio resto.

 

Escrevi o código em javaScript, como fiquei com preguiça de transpassar para php deixei assim mesmo, mas como eu disse "a receita esta ai faça ao seu modo", no código não faço nenhum tipo validação, "de qualquer forma se o cara passar o cpf errado não será validado mesmo" mas isso fica por sua conta.

 

 <script type="text/javascript">
 <!--
 window.onload = function () {
alert(validaCPF("coloque seu cpf aqui"));
 }
function validaCPF(cpf) {
	var digitos = new Array();
	var pd = 0;//primeiro digito
	var sd =0;//segundo digito
	var resultado1 = 0;
	var resultado2 = 0;
	var rest1 = 0;
	var rest2 = 0;

	//organizar cada índice do CPF com seu valor no vetor		
	for (var i=0; i<cpf.length; i++) {
		digitos[i] = cpf.charAt(i); 
	}

	//soma os dígitos de primeiro ao nono 000.000.000-xx multiplicando
	//com numeros em uma ordem inversa de 10  a 2
	for (var i=10, p=0 ; i>=2; i--, p++) {
		pd += digitos[p]*i
	}
               //verifique se todos os digitos são iguais, se forem o teste validara
               //o cpf causando um erro de lógica, obs.: outras validações devem ser 
               //feita antes de passar o valor a função

	resultado1 = pd * 10;
	rest1 = resultado1%11;

	// lembrando que: indice 9  é o valor do décimo digito
	if (rest1 == 10){ digito[9] = 0; }		
	 else{ digitos[9] = rest1; }	

	//repete a operação agora a partir do décimo primeiro (11)
	for (var i=11, p=0 ; i>=2; i--, p++) {
		sd += digitos[p]*i
	}

	resultado2 = sd * 10;
	 rest2 = resultado2%11;

	  if (rest2 == 10) {	digitos[10] = 0;}
	   else{ digitos[10] = rest2;}

	   alert(cpf.substr(9,cpf.length)+'\n'+rest1+''+rest2);

	//Agora vamos comparar os dois ultimos do CPF enviado com os dois 
	//resultados obtidos no calculo 
	if (cpf.substr(9,cpf.length)==(String(digitos[9])+String(digitos[10]))) {
		return true;
	}
	else {
		return false;
	}
}
 //-->
 </script>

É só copiar, colar no head de um html e passar um cpf na função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.