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>

0 comentários:

Postar um comentário

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More