Olá pessoal,
Devido ao grande sucesso que foi o post sobre a implementação de uma Função javascript para validar CPF resolvi escrever um novo artigo semelhante, porém focando na linguagem php.
Como disse no post da função js, o javascript é uma linguagem que roda em lado cliente, ou seja, no browser do usuário que está “rodando” a aplicação ou site. E o javascript hoje em dia é facilmente desabilitado nos navegadores com 2 ou 3 cliques. Esse processo pode burlar a validação do seu formulário e abrir espaço para que um CPF inválido seja inserido no banco de dados.
E é baseando-se nisso que devemos fazer uma verificação também em uma linguagem que execute no lado do servidor para que o sistema fique mais completo no quesito validação de dados.
Por isso desenvolvi uma função em php que realiza a mesma tarefa de verificação de CPFs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | function verificaCpf($cpf){ $s = $cpf; $c = substr($s, 0, 9); $dv = substr($s, 9, 2); $d1 = 0; $v = false; for ($i = 0; $i < 9; $i++){ $d1 = $d1 + substr($c, $i, 1) * (10 - $i); } if($d1 == 0){ return "CPF invalido!"; $v = true; } $d1 = 11 - ($d1 % 11); if($d1 > 9){ $d1 = 0; } if(substr($dv, 0, 1) != $d1){ return "CPF invalido!"; $v = true; } $d1 = $d1 * 2; for ($i = 0; $i < 9; $i++){ $d1 = $d1 + substr($c, $i, 1) * (11 - $i); } $d1 = 11 - ($d1 % 11); if($d1 > 9){ $d1 = 0; } if(substr($dv, 1, 1) != $d1){ return "CPF invalido!"; $v = true; } if(!$v){ return "CPF valido"; } } |
Exemplo de utilização da função verificaCpf
1 2 3 | verificaCpf("11111111111"); //retorna CPF valido verificaCpf("12312312312"); //retorna CPF invalido |
Simples não é? Para que seu sistema fique mais robusto, utilize as duas validações, tanto php quanto javascript.
Espero ter ajudado
Abs
Siga-me no twitter: @rafaelwendel
Olá,
Você teria um exemplo utilizando o retorno da função em um formulario e salvando no banco?
Com nome e cpf por exemplo, os tutorias que encontrei são iguais aos seus. Estou precisando muito, obrigado!
Já vasculhei a internet e todos os tutoriais são iguais. Não tem esta parte de verificar antes de passar por todos os campos e depois salvar no banco de dados.