<cfcomponent>
<cffunction name="CPFvalidate" access="public" returntype="boolean">
<cfscript>
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>
</cffunction>
<cffunction name="validacpf" access="public" returntype="string">
<cfargument name="cpf" type="string" required="yes"/>
<cfset cpfStatus = CPFvalidate(arguments.cpf)>
<cfreturn cpfStatus>
</cffunction>
</cfcomponent>
--
Você recebeu este e-mail pois está cadastrado na lista ColdFusion Brasil
Para CANCELAR sua assinatura escreva para cfbrasil+u...@googlegroups.com
Para ASSINAR a lista escreva para cfbrasil+...@googlegroups.com
O endereço para ENVIO DE MENSAGENS da lista é cfbr...@googlegroups.com
REGRAS em http://groups.google.com/group/cfbrasil/web/regras-de-boa-convivncia-na-lista
Outras opções disponíveis em http://groups.google.com/group/cfbrasil
Christiano Jose de
Oliveira
Project Manager - Brasil Netuno Internacional
DebugNet - Development Business Group
coli...@debug.net.br
http://www.debug.net.br