Ir para conteúdo
Fórum Script Brasil
  • 0

validação de CPF


Laylla Cristine

Pergunta

Fala galera, preciso de ajuda pro codigo de validação do cpf, eu preciso do seguinte, eu já tenho um código de validação so que eu preciso que tenha nesse código uma condição que não deixe o usuário se cadastrar mais de uma vez, ai vai o código. Obrigada.

// Função que valida o CPF

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;

}

}

// Verifica se o botão de validação foi acionado

if(isset($_POST['btvalidar']))

{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima

$cpf_enviado = validaCPF($_POST['cpf']);

// Verifica a resposta da função e exibe na tela

if($cpf_enviado == true)

echo "CPF VERDADEIRO";

elseif($cpf_enviado == false)

echo "CPF FALSO";

}

?>

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
tarde,

então você não quer que a pessoa não se cadastre usando o mesmo cpf certo ?

Aonde você salva os cpf cadastrados ?

Então, eu uso o banco de dados postegre(php_admin) e a pessoa faz o cadastro e ele armazena. Só que ta havendo conflito de informações por que as pessoas estão fazendo mais de um cadastro usando o mesmo CPF e alterando algumas informações e eu não quero isso. Quero apenas um cadastro por CPF, assim a pessoa vai ter que preencher o formulário corretamente usando um CPF.

Link para o comentário
Compartilhar em outros sites

  • 0

tarde,

como o renato disse faça uma busca no banco e veja se existe ai so adicionar a consulta a função.

um exemplo seria:

$v_cpf = mysql_num_rows(mysql_query("SELECT cpf from cpf where cpf = '$cpf'"));
                if ($v_cpf == 0){
                    return true;
                }else{
                    return false;
                }

Link para o comentário
Compartilhar em outros sites

  • 0
tarde,

como o renato disse faça uma busca no banco e veja se existe ai so adicionar a consulta a função.

um exemplo seria:

$v_cpf = mysql_num_rows(mysql_query("SELECT cpf from cpf where cpf = '$cpf'"));
                if ($v_cpf == 0){
                    return true;
                }else{
                    return false;
                }

Beleza, mas isso é direto no banco de dados? Ou no código de validação ?

Link para o comentário
Compartilhar em outros sites

  • 0

Isso foi só um exemplo simples para você entender, no seu caso você teria que adaptar pra a sua tabela no banco de dados.

E no caso o código entraria no meio da sua função mesmo.

Ele vai consultar o banco procurando pelo CPF informado,

se o resultado for igual a 0 significa que o CPF informado não está cadastrado.

Mas como esse foi um exemplo prático não significa que você possa simplismente copiar pro seu código que já vai sair funcionando.

Link para o comentário
Compartilhar em outros sites

  • 0

No código, após o form ser enviado. Como o seu banco é o POSTGREE, seria...

$v_cpf = pg_num_rows(pg_query("SELECT cpf from cpf where cpf = '$cpf'"));
                if ($v_cpf == 0){
                    pg_query("INSERT INTO...");
                }else{
                    print("CPF j&aacute; cadastrado!");
                }

Link para o comentário
Compartilhar em outros sites

  • 0
No código, após o form ser enviado. Como o seu banco é o POSTGREE, seria...

$v_cpf = pg_num_rows(pg_query("SELECT cpf from cpf where cpf = '$cpf'"));
                if ($v_cpf == 0){
                    pg_query("INSERT INTO...");
                }else{
                    print("CPF j&aacute; cadastrado!");
                }

pg_query("INSERT INTO..."); aqui onde ta "..." eu tenho que colocar o nome da minha tabela ?

Link para o comentário
Compartilhar em outros sites

  • 0

Isso, mas lembre-se que você precisa alterar o exemplo para que fique funcional a sua tabela. Inclusive no SELECT

O legal é você jogar tudo na sua função que valida o cpf e depois so fazer assim:

if (validaCPF($cpf) == true) {
            echo "verdadeiro";
            pg_query("INSERT INTO...");
        } else {
            echo "falso";
        }

Mas ai e como cada um escolher seu jeito de fazer.

Eu deixaria tudo na função e depois faria o INSERT.

Agora so depende de você analizar o melhor jeito que lhe cabe.

Link para o comentário
Compartilhar em outros sites

  • 0
Isso, mas lembre-se que você precisa alterar o exemplo para que fique funcional a sua tabela. Inclusive no SELECT

O legal é você jogar tudo na sua função que valida o cpf e depois so fazer assim:

if (validaCPF($cpf) == true) {
            echo "verdadeiro";
            pg_query("INSERT INTO...");
        } else {
            echo "falso";
        }

Mas ai e como cada um escolher seu jeito de fazer.

Eu deixaria tudo na função e depois faria o INSERT.

Agora so depende de você analizar o melhor jeito que lhe cabe.

É que eu to aprendendo a mexer agora, então o que eu tenho que alterar no meu código? Digo nesse código que você colocou como exemplo o que é alteravel e o que é uma variável fixa ?

Link para o comentário
Compartilhar em outros sites

  • 0

voce tem o formulario que envia por post as variaveis digitadas (ou para outra pagina ou para a mesma) só ver no <form name.. action..

nesta pagina que recebe as variaveis tem o insert, é ai que vai ter que alterar.

antes de dar o insert fazer um select como o Renato passou para checar, se não existir o cadastro com o cpf faz o insert, se já tiver o cadastro pode colocar o print/ecop ou um alert e voltar para a pagina de cadastro ou enviar para uma pagina de login(se for um cadastro para acesso) ai vai depender da sua aplicação

qualquer coisa coloque o pedaço que tem o insert, fica mais facil para você entender

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...