Validando o campo CPF em PHP

PHP

12/11/2010

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

Claudio Gonçalves

Curtidas 0

Respostas

Domingos Júnior

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));
    }
GOSTEI 0
Claudio Gonçalves

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

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.
GOSTEI 0
José

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
POSTAR