# CPF Validation in ASP (VBSCRIPT)

Suddenly we need a validator via server-side CPF, since several on the internet do not work correctly and others accept incorrect values, following is a code found that is fully functional for any type of CPF.

Remember, server-side validation is essential to ensure that data is not going wrong on your system.

Function IsCPF(Cpf)

Dim multiplic1,multiplic2

multiplic1=Array(10,9,8,7,6,5,4,3,2)

multiplic2=Array(11,10,9,8,7,6,5,4,3,2)

Dim tempCpf,digit,sum,remainder,i,RegXP

Cpf = Trim(Cpf)

Cpf = Replace(Cpf,".", "")

Cpf = Replace(Cpf,"-", "")

If (Len(Cpf) <> 11) Then

IsCPF = False

Else

tempCpf = Left(Cpf,9)

sum = 0

Dim intCounter

Dim intLen

Dim arrChars()

intLen = Len(tempCpf)-1

Redim arrChars(intLen)

For intCounter = 0 to intLen

arrChars(intCounter) = Mid(tempCpf, intCounter + 1,1)

Next

i=0

For i = 0 to 8

sum =sum + CInt(arrChars(i)) * multiplic1(i)

Next

remainder = sum Mod 11

If (remainder < 2) Then

remainder = 0

Else

remainder = 11 - remainder

End If

digit = CStr(remainder)

tempCpf = tempCpf & digit

sum = 0

intLen = Len(tempCpf)-1

Redim arrChars(intLen)

intCounter= 0

For intCounter = 0 to intLen

arrChars(intCounter) = Mid(tempCpf, intCounter + 1,1)

Next

i=0

For i = 0 to 9

sum =sum + CInt(arrChars(i)) * multiplic2(i)

Next

remainder = sum Mod 11

If (remainder < 2) Then

remainder = 0

Else

remainder = 11 - remainder

End If

digit = digit & CStr(remainder)

Set RegXP=New RegExp

RegXP.IgnoreCase=1

RegXP.Pattern=digit & "$"

If RegXP.test(Cpf) Then

RegXP.Pattern="\b(\d)\1+\b"

If Not RegXP.test(Cpf) Then

IsCPF = True

Else

IsCPF = False

End if

Else

IsCPF = False

End If

End If

End Function

Source: http://stackoverflow.com/questions/11668350/cpf-validation-in-classic-asp

Com essa alteraçaõ, se o número do cpf começar com 0 da erro de divisão por 0.

ReplyDeleteEste erro já foi ajustado.

Delete