Mais Populares

9 de fevereiro de 2016

Validação de CPF em ASP (VBSCRIPT)

De repente precisamos de um validador via server-side de CPF, haja visto que vários na internet não funcionam corretamente e outros aceitam valores incorretos, segue à seguir um código encontrado que é totalmente funcional para qualquer tipo de CPF.

Lembre-se, a validação por server-side é essencial para garantir que dados não estejam entrando errado em seu sistema.






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
elseif cpf = Onz("0") or (cdbl(cpf) / cdbl( mid(cpf,1,1) )) = cdbl(Onz("1")) 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
            IsCPF = true
        else
            IsCPF = false
        end if
    end if
end Function
Function Onz(n) : Onz = n&n&n&n&n&n&n&n&n&n&n : End Function

Correção #1: Estava passando CPF com números repetidos. A função foi modificada para evitar esta ocorrência. Ex.: CPF: "111.111.111-11".

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

Nenhum comentário :

Postar um comentário

Deixe seu comentário abaixo e curta Tutorial TI no facebook!