Jump to content
Fórum Script Brasil
  • 0

validação de CPF


Laylla Cristine

Question

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 to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...