D2th3 3 Denunciar post Postado Setembro 10, 2009 Amigos, Estou usando uma função para validar o CPF digitado no formulário, porém esse função tem invalidado CPFs corretos e verdadeiros (pesquisei no site da Receita Federal). Não são todos e sim algumas ocorrencias. function ValidaCPF($dados) { $cpf = str_replace(array(".","-"),"",$dados); $soma = 0; if(strlen($cpf) == 11){ $cpf_nulo = array("00000000000", "11111111111", "22222222222", "33333333333", "44444444444", "55555555555", "66666666666", "77777777777", "88888888888", "99999999999"); if(!in_array($cpf, $cpf_nulo)){ for ($i = 0; $i < 9; $i++) { $soma += (($i+1) * $cpf[$i]); } $d1 = ($soma % 11); if ($d1 == 10) { $d1 = 0; } $soma = 0; for ($i = 9, $j = 0; $i > 0; $i--, $j++) { $soma += ($i * $cpf[$j]); } $d2 = ($soma % 11); if ($d2 == 10) { $d2 = 0; } if ($d1 == $cpf[9] && $d2 == $cpf[10]) { return true; }else{ return false; } }else{ return false; } }else{ return false; } } Por favor me ajudem a verificar se existe algum erro nessa validação ou me indique se houve alguma alteração na Receita Federal para validar CPFs. Compartilhar este post Link para o post Compartilhar em outros sites
Diego Macêdo 6 Denunciar post Postado Setembro 10, 2009 Tenta essa função: function validaCPF($cpf) { // Verifiva se o número digitado contém todos os digitos $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT); // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999') { return false; } else { // Calcula os números para verificar se o CPF é verdadeiro for ($t = 9; $t < 11; $t++) { for ($d = 0, $c = 0; $c < $t; $c++) { $d += $cpf{$c} * (($t + 1) - $c); } $d = ((10 * $d) % 11) % 10; if ($cpf{$c} != $d) { return false; } } return true; } } Compartilhar este post Link para o post Compartilhar em outros sites
D2th3 3 Denunciar post Postado Setembro 13, 2009 Tenta essa função: function validaCPF($cpf) { // Verifiva se o número digitado contém todos os digitos $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT); // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999') { return false; } else { // Calcula os números para verificar se o CPF é verdadeiro for ($t = 9; $t < 11; $t++) { for ($d = 0, $c = 0; $c < $t; $c++) { $d += $cpf{$c} * (($t + 1) - $c); } $d = ((10 * $d) % 11) % 10; if ($cpf{$c} != $d) { return false; } } return true; } } Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Felipe And. 0 Denunciar post Postado Janeiro 31, 2012 Amigo, achei um site bem interessante sobre validação de cpf, eles me ajudaram bastante e to repassando, vai que eles podem te ajudar tbm né... site : www.consultacpf.com . abraços Compartilhar este post Link para o post Compartilhar em outros sites