Validando o campo CPF em PHP
Olá a todos,
Tenho uma tela de cadastro de cliente em HTML que vou utilizar com PHP.
Estou montando esta loja virtual utilizando o Dreamweaver, como faço para validar
se o cfp é verdadeiro, ou seja, se pelo menos ele esta correto e não é um cfp inventado
pelo usuário na hora do cadastro?
att
Claudio
Claudio Gonçalves
Curtidas 0
Respostas
Domingos Júnior
12/11/2010
function verifica_cpf($cpf) {
$cpf = str_replace(".","",$cpf);
if (strlen($cpf) <> 12) return 0;
$soma1 = ($cpf[0] * 10) +
($cpf[1] * 9) +
($cpf[2] * 8) +
($cpf[3] * 7) +
($cpf[4] * 6) +
($cpf[5] * 5) +
($cpf[6] * 4) +
($cpf[7] * 3) +
($cpf[8] * 2);
$resto = $soma1 % 11;
$digito1 = $resto < 2 ? 0 : 11 - $resto;
$soma2 = ($cpf[0] * 11) +
($cpf[1] * 10) +
($cpf[2] * 9) +
($cpf[3] * 8) +
($cpf[4] * 7) +
($cpf[5] * 6) +
($cpf[6] * 5) +
($cpf[7] * 4) +
($cpf[8] * 3) +
($cpf[10] * 2);
$resto = $soma2 % 11;
$digito2 = $resto < 2 ? 0 : 11 - $resto;
return (($cpf[10] == $digito1) && ($cpf[11] == $digito2));
}
$cpf = str_replace(".","",$cpf);
if (strlen($cpf) <> 12) return 0;
$soma1 = ($cpf[0] * 10) +
($cpf[1] * 9) +
($cpf[2] * 8) +
($cpf[3] * 7) +
($cpf[4] * 6) +
($cpf[5] * 5) +
($cpf[6] * 4) +
($cpf[7] * 3) +
($cpf[8] * 2);
$resto = $soma1 % 11;
$digito1 = $resto < 2 ? 0 : 11 - $resto;
$soma2 = ($cpf[0] * 11) +
($cpf[1] * 10) +
($cpf[2] * 9) +
($cpf[3] * 8) +
($cpf[4] * 7) +
($cpf[5] * 6) +
($cpf[6] * 5) +
($cpf[7] * 4) +
($cpf[8] * 3) +
($cpf[10] * 2);
$resto = $soma2 % 11;
$digito2 = $resto < 2 ? 0 : 11 - $resto;
return (($cpf[10] == $digito1) && ($cpf[11] == $digito2));
}
GOSTEI 0
Claudio Gonçalves
12/11/2010
Olá domingos,
Só mais um detalhe, meu input text do html
esta inserindo uma máscara quando o cpf é digitado,
ex. se o usuário digita o cpf existe uma função que coloca
os pontos e a / no mesmo. Essa funçã oque enviou ira
funcionar nesta situação, pois se o usuário digitar
08811177780 ele irá aumtomaticamente mostrar
na tela e gravar no banco como
088.111.777-80
entende?
att
Claudio
GOSTEI 0
Domingos Júnior
12/11/2010
esta função funciona se você passar o cpf com os pontos ou não, tanto faz. Mas para funcionar com o traço (-) antes dos dois ultimos numeros inclua a seguinte linha:
$cpf = str_replace("-","",$cpf);
em baixo da linha:
$cpf = str_replace(".","",$cpf);
Pronto, agora vai funcionar se vc passar o cpf com os pontos e o traço ou sem eles.
$cpf = str_replace("-","",$cpf);
em baixo da linha:
$cpf = str_replace(".","",$cpf);
Pronto, agora vai funcionar se vc passar o cpf com os pontos e o traço ou sem eles.
GOSTEI 0
José
12/11/2010
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0