Ir para o conteúdo

Validação de CPF


Criado por raviel28, Out 01 2010 01:01

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 raviel28

raviel28
  • raviel28
  • Colaborador
  • 22 Revisões

Revisou 01 outubro 2010 - 01:01

Script simples para validação de CPF

<cfscript>
/**
* Checa se um CPF específico (Brasil) é válido.
*
* @param inputCPF O CPF (000.000.000-00) para checar.
* @return Retorna um boolean.
*/
function CPFvalidate(thisCPF) {
var thisCPFdigitos = "";
var thisDigit = 0;
var thisCPFlen = 0;

var somaDigitoUm = 0;
var somaDigitoDois = 0;
var digitoUm = 0;
var digitoDois = 0;
var i = 0;

thisCPF = Replace(thisCPF, " ", "", "ALL");
thisCPF = Replace(thisCPF, ".", "", "ALL");
thisCPF = Replace(thisCPF, "-", "", "ALL");
thisCPFlen = len(thisCPF);

// Numérico, 11 dígitos e maior que zero (no caso 000.000.000-00)
if (NOT (IsNumeric(thisCPF) AND thisCPFlen EQ 11 AND thisCPF GT 0))
return false;

// Separa o número e digitos verificadores
thisCPFdigitos = right(thisCPF, 2);
thisCPF = left(thisCPF, 9);

// Por exemplo 111.111.111-11, 222.222.222-22, etc.
// O caso 000.000.000-00 é tratato em thisCPF GT 0, acima.
// Só faz tal verificação se os dígitos forem maior que zero (não se pode
//dividir por zero)

if (thisCPFdigitos AND int(thisCPF/thisCPFdigitos) EQ 10101010)
return false;

for(i=10; i GT 1; i=i-1) {
thisDigit = mid(thisCPF, 11-i, 1);
somaDigitoUm = somaDigitoUm + thisDigit * i;
}
digitoUm = somaDigitoUm * 10 MOD 11;
if (digitoUm EQ 10)
digitoUm = 0;

thisCPF = thisCPF & digitoUm;

for(i=11; i GT 1; i=i-1) {
thisDigit = mid(thisCPF, 12-i, 1);
somaDigitoDois = somaDigitoDois + thisDigit * i;
}
digitoDois = somaDigitoDois * 10 MOD 11;
if (digitoDois EQ 10)
digitoDois = 0;

if (digitoUm & digitoDois EQ thisCPFdigitos)
return true;
else
return false;
}

</cfscript>





1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)