[PHP MG] [OFF] Gerador de CNH

4,025 views
Skip to first unread message

Rafael Machado Pouzada

unread,
Jul 2, 2013, 9:25:59 AM7/2/13
to ph...@googlegroups.com
PessoALL,

Estou desenvolvendo um sistema para uma empresa que presta serviços para o Detran. Neste sistemas terá um cadastro onde o usuário preenche um formulário com o número de sua CNH. Estou conseguindo validar, o problema é testar...

Será que alguém conhece algum gerador de número de CNH assim como existe de CPF, CNPF entre outros...

Já pesquisei bastante e não encontrei nada, nem explicando como funciona o cálculo dos números...

Se alguém puder ajudar...

Desde já obrigado galera....

Vinícius Bertoldi

unread,
Jul 2, 2013, 10:55:12 AM7/2/13
to ph...@googlegroups.com
Os exemplos não estão em PHP, mas da pra ter uma ideia:

http://www.devmedia.com.br/forum/validacao-do-numero-de-registro-de-cnh/354889

Vinícius Bertoldi


--
--
Você recebeu esta mensagem porque está inscrito no grupo "PHP MG" no grupos do Google.
Site oficial do grupo: http://www.phpmg.com
Para postar neste grupo, envie um e-mail para ph...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpmg-un...@googlegroups.com
Regras da lista: http://groups.google.com/group/phpmg/web/regras-da-lista
Para ver mais opções, acesse http://groups.google.com/group/phpmg
---
Você está recebendo esta mensagem porque se inscreveu no grupo "PHP MG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para phpmg+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Guilherme Luís Furtado nogueira

unread,
Oct 8, 2013, 10:40:09 AM10/8/13
to ph...@googlegroups.com
Criei um Função em VB.Net que valida a CNH segue.



Public Shared Function ValidaCNH(ByVal CNH As String) As Boolean
            Dim retorno As Boolean
            Dim j, Mult, Soma, Digito1, Digito2, Incr_dig2 As Integer
            Dim CNH_Forn, Dig_Forn, Dig_Enc As String

            If CNH.Trim.Length < 11 Then Return False
            CNH_Forn = CNH.Substring(0, 9)
            Dig_Forn = CNH.Substring(9, 2)
            Incr_dig2 = 0
            Soma = 0
            Mult = 9
            For j = 0 To 8
                Soma = Soma + (CInt(CNH_Forn.Substring(j, 1)) * Mult)
                Mult = Mult - 1
            Next
            Digito1 = Soma Mod 11
            If Digito1 = 10 Then Incr_dig2 = -2
            If Digito1 > 9 Then Digito1 = 0
            Soma = 0
            Mult = 1
            For j = 0 To 8
                Soma = Soma + (CInt(CNH_Forn.Substring(j, 1)) * Mult)
                Mult = Mult + 1
            Next
            If (Soma Mod 11) + Incr_dig2 < 0 Then Digito2 = 11 + (Soma Mod 11) + Incr_dig2
            If (Soma Mod 11) + Incr_dig2 >= 0 Then Digito2 = (Soma Mod 11) + Incr_dig2
            If Digito2 > 9 Then Digito2 = 0
            Dig_Enc = CStr(Digito1) & CStr(Digito2)
            If Dig_Forn = Dig_Enc Then retorno = True Else retorno = False
            Return retorno
        End Function


Agora é so adequar para a Linguagem que você precisa e mandar ver.

Abraços

Rafael Machado Pouzada

unread,
Oct 9, 2013, 1:37:40 PM10/9/13
to ph...@googlegroups.com
Fala Guilherme...

Para validar eu consegui fazer uma função em php. Meu problema era conseguir número de CNH válido para testar. Porque em minha pesquisa eu vi que não existem cnh's somente com 11 números, mas de 7, 8, 9 e 10 também.

Nesse fórum (http://www.devmedia.com.br/forum/validacao-do-numero-de-registro-de-cnh/354889) eu consegui encontrar esse link (http://www.detran.rj.gov.br/_monta_aplicacoes.asp?doc=5646&cod=14&tipo=exibe_noticias&pag_noticias=true) do site do detran rj que, conforme pode-se observar, existem vários cnh's com quantidade de dígitos diferentes..

Mas já consegui fazer a função validando todas essas cnh's..



--
Reply all
Reply to author
Forward
0 new messages